在32位操作系统下,任何类型的指针变量都占四个字节,为什么输出结果是8呢

MZ_ing 2023-09-12 11:18:49
#include<stdio.h>
struct INFO
{
        int a;
        char b;
        double c;
};
int main()
{
        int *p;
        char *p1;
        float *p2;
        double *p3;
        struct INFO *p4;   //struct INFO类型为结构体类型 
        void *p5;
        printf("int point size is :%d\n",sizeof(p));
        printf("char point size is :%d\n",sizeof(p1));
        printf("float point size is :%d\n",sizeof(p2));
        printf("double point size is :%d\n",sizeof(p3));
        printf("struct point size is :%d\n",sizeof(p4));
        printf("void point size is :%d\n",sizeof(p5));
        return 0;
}

 

 

...全文
183 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-09-12
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/7998248, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
小白很黑555 2023-09-12
  • 打赏
  • 举报
回复

你看看编译器是32位还是64位,64位打印出来是8

柯本 2023-09-12
  • 打赏
  • 举报
回复

理论上,它与操作系统无关,与编译器及生成代码的位数有关(当然,32位系统下是不能运行63位程序的)
在64位系统上,用分别用32/64位结果如下

img

MZ_ing 2023-09-12
  • 打赏
  • 举报
回复

电脑是64位操作系统

码上行者 2023-09-12
  • 打赏
  • 举报
回复

img


64位操作系统全部输出4?

69,512

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧