【发布时间】:2017-05-26 01:04:23
【问题描述】:
在以下程序中,使用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
}
【问题讨论】:
-
地址到底发生了什么变化?
-
不合理。存储在数组中的字符串正在发生变化。这与其地址无关。
-
你真的应该阅读a good book on C++。