程序:
int x;
int *y;
int **z;
z = (int **) malloc (sizeof(int *));
y = (int *) malloc (sizeof(int));
x = 1;
*z = &x;
*y = x;
.
.
.
问题:有什么区别:
*z = &x;
*y = x;
根据我的理解,*z 指向 x 的地址,*y 指向 x,但是 *y 指向 x 不需要 x 的地址吗?我真的不明白这两个变量发生了什么。
编辑:我还想知道我们什么时候知道变量是在堆栈上还是堆上分配的?
- 为什么 x、y 和 z 在堆栈上分配?
- 为什么 *y, **y, *z, **z 分配在堆上?
最后,改变*z,改变**z吗?