马老师 发表于 2020-10-18 13:37:41

指针问题

初学指针
我定义了一个*p,可不可以理解位*p就是i?以及我用%d打印出来p出来的奇怪的数字又是什么?

jackz007 发表于 2020-10-18 14:04:04

本帖最后由 jackz007 于 2020-10-18 15:20 编辑

#include <stdio.h>

main(void)
{
      int i = 8888 , * p = & i      ;

      printf("p = %p\n" , p)      ; // 输出指针变量 p 的数值
      printf("p = %I64X\n" , p)   ; // 输出指针变量 p 的数值
      printf("& p = %p\n" , & p)    ; // 输出指针变量 p 的内存地址
      printf("& p = %I64X\n" , & p) ; // 输出指针变量 p 的内存地址
      printf("& i = %p\n" , & i)    ; // 输出整型变量 i 的内存地址
      printf("& i = %I64X\n" , & i) ; // 输出整型变量 i 的内存地址
      printf("i = %d\n" , i)      ; // 输出整型变量 i 的数值
      printf("* p = %d\n" , * p)    ; // 输出指针变量 p 所指向内存单元所存储整型变量的数值
}

2269099035 发表于 2020-10-18 15:12:44

%p是以地址形式输出数字,一般是十六进制。第六行跟第七行就是把0用那个格式输出出来。第八行是查看i的内存地址,第九行把0这个值以十进制的格式输出。第十行是把内存地址以十进制输出出来,你换算一下,跟第八行的值是一样的。

马老师 发表于 2020-10-18 17:17:58

2269099035 发表于 2020-10-18 15:12
%p是以地址形式输出数字,一般是十六进制。第六行跟第七行就是把0用那个格式输出出来。第八行是查看i的内存 ...

谢谢
页: [1]
查看完整版本: 指针问题