|
发表于 2021-5-6 10:49:58
|
显示全部楼层
本帖最后由 yuxijian2020 于 2021-5-6 10:52 编辑
你要了解指针的本质,指针的本质就是16进制的数字
32位系统下 指针占8个字节;64位系统下,指针占16个字节
只不过,这个数字代表了内存中的地址
然后再看你的问题
- printf("%c %d\n",*pa,*pb);//这里就是取 pa 和 pb 的地址中保存的数据,再以 %c 和 %d 的形式输出到屏幕
- // %c 就是 获得一个字节的数据,按ANSI码转换成字符输出到屏幕
- // %d 就是 获得 int 大小的数据,转换为10进制,输出到屏幕
- printf("%p\n%p\n",pa,pb);//这里就是直接打印16进制的地址
- printf("%p\n%p\n",'C',124);//这里是把'C' 按ANSI码转换为16进制数字输出
- //124 这个数字也是一样,转换为16进制输出到屏幕
复制代码
然后再看下面的
- p1=&ch[4];//这里是取 ch 数组中第5个元素的地址赋值给p1
- int *p2; //定义
- p2=3;//这里是强行让p2的地址等于3(虽然计算机中没有这种地址,但是强行赋值是可以的)
- printf("%d %d",*p1,p2); //我觉得我上面说的很清楚 这里你应该了解了
- //*p1 就是 取 p1 地址中保存的数据,再以十进制输出到屏幕
- //p2 就是直接把地址转换为10进制输出到屏幕
复制代码 |
|