指针在C上的值不是期望值

Not expected value of pointer at C

本文关键字:期望值 指针      更新时间:2023-10-16

我的代码是:

int *x[2];
int var0 = 10;
int var1 = 20;
int var2 = 30;
x[0] = &var0;
x[1] = &var1;
x[2] = &var2;
cout << "var0 is equal to: " << *x[0] << endl;

var0 is equal to: 32767

我期待的:

  • 我已经初始化了3项指针数组
  • 赋值给3个变量
  • 将该变量的地址分配给指针数组的项
  • 现在我期待:*x[0] = 10, *x[1] = 20, *x[2] = 30,但正如你从例子中看到的*x[0] == 32767。为什么?
int *x[2];

声明了一个包含两个指针的数组。此数组的有效索引为[0..1]。

x[2] = &var2;

写数组末尾以外的内容。这有未定义的结果,但它听起来像&var0 == x[2],所以你重写var0,将其设置为var2的地址。

如果你想分配3个指针值,你需要一个包含三个元素的数组- int *x[3];

你已经创建了一个数组与2个元素,但你写到3个元素-这不会帮助你的问题