kat*_*kat 4 c++ arrays pointers
当我运行下面的代码时,我的输出不是我所期望的.
我理解它的方式是ptr指向Str数组的第一个元素的地址.我认为ptr + 5应该导致+第五元素f.所以输出应该只显示f而不是两者fg.
它为什么显示fg?它与如何cout显示数组有关吗?
#include <iostream>
using namespace std;
int main()
{
char *ptr;
char Str[] = "abcdefg";
ptr = Str;
ptr += 5;
cout << ptr;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
预期产量: f
实际产量: fg
当你声明:
char Str[] = "abcdefg"
Run Code Online (Sandbox Code Playgroud)
字符串abcdefg隐式存储,并带有一个\0标记字符串结尾的额外字符.
所以,当你cout一个char*输出将是存储的所有字符,其中char *点并存储在连续的内存位置后的所有字符char*,直到\0字符在存储位置之一碰到的问题!因为,在你的例子中\0字符是后面g因此打印2个字符.
如果您只想打印当前字符,您应该这样做::
cout << *ptr;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |