//A指向Z,Z指向变量Y,Y等于10;
int Y = 10;
int *A,*Z;
Z = &Y;
A = &Z;
printf("Z:%d\n",&*Z);//Z:6422036
printf("A:%d\n",&*A);//A:6422024
printf("Y:%d",Y);//Y:10
printf("Y:%d",&Y);//Y:6422036
怎么A不同
我可以编写以下程序来更改指针A的指向,以便在程序中对Y进行修改:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *Y = (int *) malloc(sizeof(int));
*Y = 10;
int **Z = &Y;
int ***A = &Z;
printf("Y的值为:%d\n", **Z);
// 更改A的指向
int *new_var = (int *) malloc(sizeof(int));
*new_var = 20;
*Z = new_var;
printf("Y的值为:%d\n", **Z);
// 释放内存
free(Y);
free(new_var);
return 0;
}
解释:
需要注意的是,修改指针A的指向可能会导致内存泄露和其他问题。因此,在进行此类操作时必须小心,并确保在不再需要变量时释放内存。