指针数组中的意外结果

unexpected results in array of pointer

本文关键字:意外 结果 数组 指针      更新时间:2023-10-16

我写了简单的代码,但我得到了意想不到的结果。 我的代码如下:

#include <iostream>
using namespace std;
const int MAX = 4;
int main () {
const char *names[MAX] = { "Zara Ali", "Hina Ali", "Nuha Ali", "Sara Ali" };
for (int i = 0; i < MAX; i++) {
cout << "Value of names[" << i << "] = ";
cout << *(names + i) << endl;
}
return 0;
}

结果如下:

Value of names[0] = Zara Ali
Value of names[1] = Hina Ali
Value of names[2] = Nuha Ali
Value of names[3] = Sara Ali

但我希望得到:

Value of names[0] = Z
Value of names[1] = H
Value of names[2] = N
Value of names[3] = S

你能指导我那里发生了什么吗?

*(names+i)的含义与names[i]完全相同,这就是原因。例如,请参阅定义这种平等的在线C++标准草案:

5.2.1 下标

(1( ...表达式 E1[E2] 与 (根据定义(相同 *((E1(+(E2((

如果您希望打印每个字符串的第一个字符,则必须写入**(names+i)*(names[i])names[i][0]