[英]How can you get a constant pointer to the first char in a character array?
在以下程序中,使用cin
更改了存儲的字符串,從而更改了地址。 字符串的第一個元素的地址由s
表示。 第一個元素的地址是字符串本身。 因此,當輸入新字符串時,它已更改。 當我嘗試輸出&s[0]
以cout
它給整個字符串。
#include<iostream>
using namespace std;
int main() {
char s[6];
cin >> s; // say abcde
cout << s ;
cout << &s[0] ; // gives abcde
cin >> s; // say stack
cout << s;
cout << &s[0] ; gives stack
}
地址未更改,存儲在該地址的數據正在更改。 整個字符串被打印的原因是因為您傳遞了一個指向 cout
的指針 ,並且可以通過提供一個指向第一項的指針來將數組傳遞給一個函數(或流)。 將指針傳遞給第一個char就像傳遞C樣式字符串。 如果要打印第一個字符的地址,則需要將指針cout<<(void*)&s[0]
為void*
: cout<<(void*)&s[0]
(這將打印第一個字符的地址)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.