我想知道s
和*s
是什么意思?s
指向哪里?
char *s = "my name"
cout<<*s<<endl;
cout << s << endl;
cout << &s << endl;
cout << s+1 << endl;
cout << &(s+1) <<endl; //error code
我输出:
M
My name
0x61fe18
y name
A符合编译器可能会显示类似的警告:
warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings]
这是因为在标准c++中,如果你想用字符串字面值初始化char*
,你需要让它为const,因为c++中引号括起来的字符串是const chars
的集合。
const char* s = "my name";
声明了一个指针,指向以空结束的常量字符串&;my name&;指针将指向第一个元素(const char
),但是如果您尝试这样打印s
:
cout << s << endl;
记住:s
是一个指针返回null结束的字符串.
每个后续的const char
将被打印,直到找到空终止符