指针的作用是保存特定变量的地址.那么下面代码的内存 struct 应该是这样的:
int a = 5;
int *b = &a;
...... memory address ...... value
a ... 0x000002 ................... 5
b ... 0x000010 ................... 0x000002
好吧,好吧.然后假设现在我想保存指针*b的地址.然后我们通常定义一个双指针,**c,如下所示:
int a = 5;
int *b = &a;
int **c = &b;
然后内存 struct 看起来像:
...... memory address ...... value
a ... 0x000002 ................... 5
b ... 0x000010 ................... 0x000002
c ... 0x000020 ................... 0x000010
所以**c指的是*b的地址.
现在我的问题是,为什么这种类型的代码,
int a = 5;
int *b = &a;
int *c = &b;
生成警告?
如果指针的目的只是保存内存地址,我认为如果我们要保存的地址引用变量、指针、双指针等,就不应该有层次 struct ,所以下面的代码类型应该是有效的.
int a = 5;
int *b = &a;
int *c = &b;
int *d = &c;
int *e = &d;
int *f = &e;