被同学问到这个问题,不知道怎么回答 char *s="abcd";
cout<<s<<\n;
cout<<*s<<\n;
cout<<++s<<\n;
cout<<*(++s)<<\n; int i,*p;
i=1;
p=&i;
cout<<*p<<\n;
cout<<p;
/*输出结果为:abcd
a
bcd
b
1
ox....(一个地址,具体忘了)
*/ 为什么s输出的不是这个字符串的首地址,就像p输出为i的地址?
cout<<s<<\n;
cout<<*s<<\n;
cout<<++s<<\n;
cout<<*(++s)<<\n; int i,*p;
i=1;
p=&i;
cout<<*p<<\n;
cout<<p;
/*输出结果为:abcd
a
bcd
b
1
ox....(一个地址,具体忘了)
*/ 为什么s输出的不是这个字符串的首地址,就像p输出为i的地址?
与cout重载<<符号有关,因为是s是char 指针的缘故
所以对应的<<重载函数是:
ostream& operator<<(const char *);相匹配
所以输出的是s对应的字符串,如果想和p输出的一样
稍微改动下即可
cout<<(void *)s<<'\n';
std::cout<< (void*)(&(*s))<<std::endl;