最佳答案
指针的作用是保存特定变量的地址。那么下面代码的内存结构应该是这样的:
int a = 5;
int *b = &a;
内存地址... 值
A... 0x000002... 5
B... 0x000010... 0x000002
好吧。然后假设现在我想保存指针 * b 的地址。然后,我们通常将双指针 * * c 定义为
int a = 5;
int *b = &a;
int **c = &b;
然后内存结构看起来像:
内存地址... 值
A... 0x000002... 5
B... 0x000010... 0x000002
C... 0x000020... ... ... ... 。0x000010
所以 * * c 指的是 * b 的地址。
我的问题是,为什么这种代码,
int a = 5;
int *b = &a;
int *c = &b;
发出警告?
如果指针的作用仅仅是保存内存地址,我认为如果我们要保存的地址引用了一个变量、一个指针、一个双指针等,那么应该不存在层次结构,所以下面的代码类型应该是有效的。
int a = 5;
int *b = &a;
int *c = &b;
int *d = &c;
int *e = &d;
int *f = &e;