[英]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.