char label[] = "Single";
char *labelPtr;
labelPtr = label;
cout<<labelPtr;;
return 0;
上述代码的输出为Single
我对输出感到困惑。
据我的理解labelPtr
应包含label[0]
的地址。那么输出应该不等于&label[0]
?
答案 0 :(得分:2)
std :: cout将char *视为指向C风格字符串的指针。 所以打印出整个C风格的字符串。
考虑转换为(void *)以查看将会发生什么。
答案 1 :(得分:0)
labelPtr = label;
在此标签中引用char数组的第一个元素。然后你正在使labelptr指向同一个数组。这意味着从现在开始,您可以使用labelptr,就像使用label一样。
所以,两者都是等价的: -
cout << label;
cout << labelptr;
答案 2 :(得分:0)
由于cout
认为参数属于char*
类型。打印字符串的所有内容。
您只能使用
打印第一个字符cout<<*labelPtr;;
这将仅打印第一个字符。要使用cout<< *(labelPtr+1);;