如果我有以下代码片段,我对指针的取消引用感到困惑:
char str[]="ABC";
char *a=str;
那a+1指的是什么?
整体是B还是BC?
这种困惑在我心中开始出现,因为当我给予时:
cout<<a+1;
它给了我 BC 而不是 B,为什么会这样?
如果我有一个交换值的函数并且它接受如下参数:
void swap((a+1),(a+2))
上述函数将如何运行? 它会把 B 和 C 交换吗?
最佳答案
这是你的指针,a
,指向字符串“ABC”的开头(注意末尾的\0 代表隐式 NUL 终止符字节):
ABC\0
^
|
a
这是将一个添加到 a
后的样子:
ABC\0
^
|
a
请注意 a
现在指向字符数组中的下一个条目。 cout 将打印字符,直到它到达数组末尾的 NUL 终止符字节,所以如果你执行 cout<<(a+1)
它将打印“BC”。
关于c++ - 关于取消引用指针的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48628479/