[笔记]C语言中二级指针简单例子
C语言中,指针本身已经令人欲仙欲死了,二级指针更是高深莫测。
下面用一个简单的例子来说明二级指针是怎么回事儿。
void TestPointer(){ int a = 5; int *b = &a; // b 是指向int的指针,且指向 a,即 b -> a int **c = &b; // c 是指向"指向int的指针"的指针,即指向 b,有 c -> b -> a int *d = *c; // d 是指向int的指针,因为 *c = b,等同于 int *d = b,而 b -> a,所以 d -> a printf("a = %X, &a = %X\n", a, &a); printf("b = %X, &b = %X, *b = %X\n", b, &b, *b); printf("c = %X, &c = %X, *c = %X, **c = %X\n", c, &c, *c, **c); printf("d = %X, &d = %X, *d = %X\n", d, &d, *d); // 调试结果 // a = 5, &a = 4AFC14 // b = 4AFC14, &b = 4AFC08, *b = 5 // c = 4AFC08, &c = 4AFBFC, *c = 4AFC14, **c = 5 // d = 4AFC14, &d = 4AFBF0, *d = 5 }
仔细观察各变量的内存地址,在纸上画画,现在应该明白二级指针是怎么回事儿了吧。
爱生活,爱拉风