[C指针]&pi pi *pi

&pi pi *pi

.c 源码

#include 

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

你可能感兴趣的:([C指针]&pi pi *pi)