为什么打印char指针和int指针会产生不同的结果? const char*arr[3]; arr[0]=“你好”; arr[1]=“C++”; arr[2]=“世界”; 对于(int i=0;i字符数组。当然,你的解释是正确的,但可能OP的混淆起源于注意到 char */Cux>是如何称呼的。也许他们需要理解空终端。ted字符串是由cout以一种特殊的方式解释的。@RobertoCaboni我喜欢Kamil在这方面的回答。真遗憾,因为你是第一个来的!:) const char* arr[3]; arr[0] = "Hello"; arr[1] = "C++"; arr[2] = "World"; for (int i = 0; i < 3; i++) { cout << arr[i]; } int* pInt[3]; for (int i = 0; i < 3; i++) { pInt[i] = &i; cout << pInt[i] << endl; }
这里的为什么打印char指针和int指针会产生不同的结果? const char*arr[3]; arr[0]=“你好”; arr[1]=“C++”; arr[2]=“世界”; 对于(int i=0;i字符数组。当然,你的解释是正确的,但可能OP的混淆起源于注意到 char */Cux>是如何称呼的。也许他们需要理解空终端。ted字符串是由cout以一种特殊的方式解释的。@RobertoCaboni我喜欢Kamil在这方面的回答。真遗憾,因为你是第一个来的!:) const char* arr[3]; arr[0] = "Hello"; arr[1] = "C++"; arr[2] = "World"; for (int i = 0; i < 3; i++) { cout << arr[i]; } int* pInt[3]; for (int i = 0; i < 3; i++) { pInt[i] = &i; cout << pInt[i] << endl; },c++,C++,这里的pInt[n]是一个int*或整数指针。您正在分配一个地址(&i),因此它会打印一个地址 如果要打印该值,需要执行*pInt[i]来取消指针的引用 为什么不同 因为有一个特殊的重载,它打印const char*指向的字节的内容 没有std::ostream::operator将标题集中在问题上。学习很好,但它没有手头的问题那么重要。回答你的问题吗?提示:const char*arr[]={“Hello”,“C++”,“World”};更好,了解一下。然后你可以为(auto&s:arr)做,
pInt[n]
是一个int*
或整数指针。您正在分配一个地址(&i
),因此它会打印一个地址
如果要打印该值,需要执行*pInt[i]
来取消指针的引用
为什么不同
因为有一个特殊的重载,它打印const char*
指向的字节的内容
没有
std::ostream::operator将标题集中在问题上。学习很好,但它没有手头的问题那么重要。回答你的问题吗?提示:const char*arr[]={“Hello”,“C++”,“World”};
更好,了解一下。然后你可以为(auto&s:arr)做,它是超级简单的。流插入操作符,注意到,在C++中,在大多数情况下,你宁愿使用 STD::String >字符数组。当然,你的解释是正确的,但可能OP的混淆起源于注意到 char */Cux>是如何称呼的。也许他们需要理解空终端。ted字符串是由cout
以一种特殊的方式解释的。@RobertoCaboni我喜欢Kamil在这方面的回答。真遗憾,因为你是第一个来的!:)
const char* arr[3];
arr[0] = "Hello";
arr[1] = "C++";
arr[2] = "World";
for (int i = 0; i < 3; i++) {
cout << arr[i];
}
int* pInt[3];
for (int i = 0; i < 3; i++)
{
pInt[i] = &i;
cout << pInt[i] << endl;
}