我尝试通过指向指针x的指针来设置指针p的内存
int *p = 0;
int **x = &p;
*x = new int[2];
*x[0] = 1; //p[0] = 1
*x[1] = 2; //p[1] = 2为什么会因为访问冲突错误而失败?
发布于 2011-02-17 18:02:02
为什么会因为访问冲突错误而失败?
[]优先于*。首先需要取消对x的引用
(*x)[0] = 1;
(*x)[1] = 1;发布于 2011-02-17 18:04:19
我觉得你的问题是
*x[1]手段
*(x[1])而不是
(*x)[1]第二个版本是您想要的;它解除对指针的引用以获得底层数组,然后读取第二个元素。您现在拥有的代码将双指针视为指向指针数组的第二个元素的指针,查找其中的第一个指针,然后尝试取消对它的引用。这不是您想要的,因为指针只指向一个指针,而不是两个。显式地将这段代码括起来应该可以解决这个问题。
发布于 2011-02-17 18:17:51
在像*A[]这样的表达式中,变量A首先被索引,然后被解除引用,而您想要的正好相反,因此需要编写(*A)[]。
https://stackoverflow.com/questions/5027398
复制相似问题