#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:
输出: