指针不是C的预期值

Via*_*iuk 1 c++ arrays pointers

我有这样的代码:

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;
Run Code Online (Sandbox Code Playgroud)
var0 is equal to: 32767
Run Code Online (Sandbox Code Playgroud)

我期待的是:

  • 我初始化了包含3个项目的指针数组
  • 为3个变量分配了一些值
  • 将此变量的地址分配给指针数组的项目
  • 现在我期待:*x[0] = 10, *x[1] = 20, *x[2] = 30,但正如你从例子中看到的那样*x[0] == 32767.为什么?

sim*_*onc 5

int *x[2];
Run Code Online (Sandbox Code Playgroud)

声明一个由2个指针组成的数组.此数组的有效索引为[0..1].这条线

x[2] = &var2;
Run Code Online (Sandbox Code Playgroud)

超出数组末尾的写入.这有不明确的后果,但听起来好像&var0 == x[2]你在写var0它,把它设置为var2地址.

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