C语言指针与指向指针的指针

#include <stdio.h>
#include <string.h>
int main()
{
    char a[]="hello world";
    char *p=a;
    char **ptr=&p;
   printf("a=%s
",a);
   printf("&a=%d
",&a);
    printf("p=%d
",p); //p为a的地址
    printf("*p=%c
",*p);  //*p为字符a[0]
    printf("ptr=%d
",ptr);  //ptr为p的地址
    printf("*ptr=%d
",*ptr);  //*ptr为p的地址保存的值,即a的地址
    printf("**ptr=%c
",**ptr);   //**ptr为a的地址保存的值,即字符a[0]
  printf("sizeof(a)=%d
",sizeof(a));
  printf("sizeof(p)=%d
",sizeof(p));
  printf("sizeof(*p)=%d
",sizeof(*p));
  printf("sizeof(ptr)=%d
",sizeof(ptr));
  printf("sizeof(*ptr)=%d
",sizeof(*ptr));
  printf("sizeof(**ptr)=%d
",sizeof(**ptr));
  return 0;
}

另外,从上述代码中sizeof部分可以看出各变量的类型,指针类型占4字节,字符类型占1字节.

debug:

输出:

原文地址:https://www.cnblogs.com/wincent98/p/8899178.html