直接上代码:
#include <stdio.h>
int main()
{
char a[] = "hello";
char *pa = a;
printf("a = %p\n",a); //数组首元素的地址 等效于 &a[0]
printf("&a = %p\n",&a); //整个数组a的首地址
//虽然这两个地址都一样,但是意义不一样,
//请参考 https://blog.csdn.net/qq_31930499/article/details/79680047
printf("pa = %p\n",pa); //pa指向内容的地址,即a的地址(&a)
printf("&pa = %p\n",&pa); //pa指针本身地址
printf("%s\n",a); //打印 注意和上面的不一样
printf("%s\n",pa); //打印 注意和上面的不一样
printf("\n");
int b = 10;
int *pb = &b;
printf("&b = %p\n",&b); //b的地址
printf("pb = %p\n",pb); //pb指向内容的地址 即b的地址(&b)
printf("&pb = %p\n",&pb); //pb指针本身地址
printf("%d\n",b); //打印
printf("%d\n",*pb); //打印
return 0;
}
运行结果:
a = 0xffffcbfa
&a = 0xffffcbfa
pa = 0xffffcbfa
&pa = 0xffffcbf0
hello
hello
&b = 0xffffcbec
pb = 0xffffcbec
&pb = 0xffffcbe0
10
10