指针*和**的理解

代码

#include 
int main()
{
  int size = sizeof(double);
  printf("----%d\n", size);
  int a = 3;
  int *p = &a;
  printf("-%p---%p\n", p, &a);
  printf("---%d\n", *p);
  int **p1;
  p1 = &p;
  printf("p1----%p---%d\n", p1, **p1);
  int ***p2;
  p2 = &p1;
  printf("p2----%p---%d--%p\n", p2, ***p2, **p2);

  printf("a的地址:%p\n", &a);
  printf("p存放a的地址:%p\n", p);
  printf("p1存放p的地址:%p---%p\n", p1, *p1);
  printf("p2存放p1的地址:%p---%p---%p\n", p2, *p2, **p2);

  return 0;
}

结果

a的地址:0x7ffeecf15544
p存放a的地址:0x7ffeecf15544
p1存放p的地址:0x7ffeecf15538---0x7ffeecf15544
p2存放p1的地址:0x7ffeecf15530---0x7ffeecf15538---0x7ffeecf15544

总结

int * p 表示申明一个int类型的指针变量,变量名为p
取值* p
int ** p表示申明一个指向指针的指针变量
取值** p

你可能感兴趣的:(指针*和**的理解)