Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不是指针在C处的预期值_C++_Arrays_Pointers - Fatal编程技术网

C++ 不是指针在C处的预期值

C++ 不是指针在C处的预期值,c++,arrays,pointers,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; 我期待的是: 我已经用3项初始化了指针数组 为3个变量分配了一些值 将此变量的地址分配给指针数组的项 现在我期望:*x[0]=1

我有这样的代码:

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;
我期待的是:

我已经用3项初始化了指针数组 为3个变量分配了一些值 将此变量的地址分配给指针数组的项 现在我期望:*x[0]=10,*x[1]=20,*x[2]=30,但正如您从示例中看到的*x[0]=32767。为什么?
您创建了一个包含2个元素的数组,但写入3个元素-这对您的问题没有帮助

您创建了包含2个元素的数组,但写入了3个元素-这对您的问题没有帮助

int *x[2];
声明由2个指针组成的数组。此数组的有效索引为[0..1]。线路

x[2] = &var2;
写入超出数组末尾的内容。这有未定义的结果,但听起来像&var0==x[2],所以您过度编写了var0,将其设置为var2的地址

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

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

x[2] = &var2;
写入超出数组末尾的内容。这有未定义的结果,但听起来像&var0==x[2],所以您过度编写了var0,将其设置为var2的地址


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

x[2]不存在;您刚刚通过写入调用了未定义的行为。@OliCharlesworth:很可能它存在,尽管只是以分配给程序堆栈的内存形式的佛陀转世:x[2]不存在;您刚刚通过写入调用了未定义的行为。@OliCharlesworth:很可能它存在,尽管它只是以分配给程序堆栈的内存的形式作为佛陀的转世: