有人可以解释我为什么这样做:
int x[4] = { 0, 1, 2, 3 };
int *p = x;
Run Code Online (Sandbox Code Playgroud)
但做不到:
int x[2][2] = { 0, 1, 2, 3 };
int **p = x;
Run Code Online (Sandbox Code Playgroud)
有没有办法能够分配给**p [] []?
TIA
指向int的指针int *可以指向整数数组中的整数,这就是为什么第一个是OK的原因;
int x[4] = { 0, 1, 2, 3 };
int *p = x;
Run Code Online (Sandbox Code Playgroud)
这使得p点x[0],在第一INT x.
指向指向int int **的指针可以指向指向int的指针数组中的指针指向int.但是,您的第二个数组不是指向int的指针数组; 它是一个数组数组.这里是没有指针到整型,所以没有什么理智点int **p的.您可以通过两种方式解决此问题.第一种是更改类型p,使其成为指向2-array的数组:
int x[2][2] = { 0, 1, 2, 3 };
int (*p)[2] = x;
Run Code Online (Sandbox Code Playgroud)
现在p指着x[0],第一个int [2]在x.
另一种方法是创建一些pointers-to-int指向:
int x[2][2] = { 0, 1, 2, 3 };
int *y[2] = { x[0], x[1] };
int **p = y;
Run Code Online (Sandbox Code Playgroud)
现在p指着y[0],这是第一个int *在y. y[0]反过来指向x[0][0],并y[1]指向x[1][0].