[笔记]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
}

仔细观察各变量的内存地址,在纸上画画,现在应该明白二级指针是怎么回事儿了吧。

原文地址:https://www.cnblogs.com/journeyonmyway/p/3047075.html