指针的目的是保存特定变量的地址。然后,以下代码的内存结构应类似于:
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;
warning: incompatible pointer types initializing 'int *' with an expression of type 'int **'; remove & [-Wincompatible-pointer-types]
。这可能使一切都变得清楚了。