关于指针地址问题

直接上代码:

#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

猜你喜欢

转载自blog.csdn.net/qq_31930499/article/details/79680325