.c 源码
#include <stdio.h>
int main()
{
int num = 29;
int * pi = #
printf("Address(&pi): %d\n Value(pi): %d\n Point to(*pi):%d\n", &pi, pi, *pi);
printf("\n(&pi) Dec:%d = Hex:0x%p\n", &pi, &pi);
printf("(pi) Dec:%d = Hex:0x%p\n", pi, pi);
printf("\nAddress(&pi): 0x%p\n Value(pi): 0x%p\n Point to(*pi):%d\n", &pi, pi, *pi);
return 0;
}
运行输出
Address(&pi): 13892140
Value(pi): 13892152
Point to(*pi):29
(&pi) Dec:13892140 = Hex:0x00D3FA2C
(pi) Dec:13892152 = Hex:0x00D3FA38
Address(&pi): 0x00D3FA2C
Value(pi): 0x00D3FA38
Point to(*pi):29
源码解析
-
&pi pi *pi
都可以用%d
来输出,此时输出的数值是十进制Dec的 -
想输出十六进制Hex,使用
%p
如何找到值?
- 0、指针变量
pi
,意味着,pi
就是变量名,变量名就是pi
- 1、变量pi 自己在内存中的位置是
&pi
- 2、变量pi 在内存中存的东西叫pi,这是另外一个内存地址2
- 3、从内存地址2 取出真正的数据
*pi
想想num就不会错
- 0、普通变量
num
,意味着变量名就是num
- 1、变量num 自己在内存中的位置叫做
&num
- 2、变量num 在内存中存的东西叫做 num,这是一个整数29
网友评论