数组与char类型的指针

时间:2014-11-26 12:10:35

标签: c++ arrays pointers

char label[] = "Single";
char *labelPtr;
labelPtr = label;
cout<<labelPtr;;
return 0;

上述代码的输出为Single 我对输出感到困惑。

据我的理解labelPtr应包含label[0]的地址。那么输出应该不等于&label[0]

3 个答案:

答案 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);;

打印第二个字符