一级指针简介

来源:1-6 项目作业

Cc大佬

2022-11-07 15:40:36

指针的结论
在32bit的操作系统中,所有类型的指针变量都是4bytes. [因为地址为4bytes]
资料里面有这样一句话这句话是仅限于32bit的操作系统么
我见下面这个代码案例输出结果有点不一样

//04-pointer.c
#include <stdio.h>

int main()
{
        char *x;
        short *y;
        int *z;
        int t = 0x12345678;

        x = (char *)&t;
        y = (short *)&t;
        z = &t;

        printf("*x = %#x\n",*x); //输出十六进制数
        printf("*y = %#x\n",*y);
        printf("*z = %#x\n",*z);

运行结果
*x = 0x78
*y = 0x5678
*z = 0x12345678

为什么这几个指针变量输出结果不是4byte啊
是因为不是32bit的操作系统么

写回答

1回答

山行老师

2022-11-07

这是因为你的函数printf()用的是【%#x】,导致地址前面的0x0000被省略掉了,如果想看到4Byte的地址应该使用【%#X】。//大写的X

0
hc大佬
hp>我懂了,是比如char就算只显示1个字节,他其实也是4个字节,只是大小X的输出显示形式不一样

h022-11-08
共1条回复

物联网/嵌入式工程师

面向零基础保姆式教学+简历指导+1V1模拟面试+3次内推,助力轻松就业!

394 学习 · 1206 问题

查看课程