C语言中int占几个字节,指针占几个字节,由什么决定呢?

C语言中int占几个字节,指针占几个字节,由什么决定呢?int 占几个字节今天心血来潮 想要了解一下 C 语言中各整型占用几个字节 先上代码测试两个环境 include stdio h include stdlib h intmain printf sizeof int d n sizeof int printf sizeof long d n sizeof long printf sizeof short d n sizeof short stdlib h stdio h

int占几个字节

今天心血来潮,想要了解一下C语言中各整型占用几个字节。

先上代码测试两个环境;

#include 
  
    #include 
   
     int main() { printf("sizeof(int)) :%d\n",sizeof(int)); printf("sizeof(long) :%d\n",sizeof(long)); printf("sizeof(short) :%d\n",sizeof(short)); printf("sizeof(char) :%d\n",sizeof(char)); printf("sizeof(float) :%d\n",sizeof(float)); printf("sizeof(double):%d\n",sizeof(double)); return 0; } 
    
  

下面是在Dev-C++ 5.11中测试的结果(编译器是gcc):

下面是在VxWorks5.5的IDE tornado2.2中的测试情况(编译器是SIMNTgnu):

可以看到我测试的两个环境(编译器)得出的结果都是一样的:int占4个字节。

这似乎可以得出结论,int就是占4个字节。

但是之前也听说int占用几个字节是没有明确规定的,一切都是由编译器决定。而编译器又取决于数据模型(Data model)。

preview

img

可以看出都满足约束:short和int型至少为16位,long型至少为32位,并且short型长度不能超过int型,而int型不能超过long型。这即是说各个类型的变量长度是由编译器来决定的,而当前主流的编译器中一般是32位机器和64位机器中int型都是4个字节(例如,GCC)。


指针占几个字节

下面再说一下指针。

指针即为地址,指针占几个字节跟语言无关,而是跟系统的寻址能力有关,譬如以前是16为地址,指针即为2个字节,现在一般是32位系统,所以是4个字节,以后64位,则就为8个字节。

可以在自己的电脑上测试下。

我同样测试两个环境。

#include 
   
     int main(void) { int a=1; char b='a'; float c=1.0; void *p; p=&a; printf("a的地址为:0x%x,其字节数为:%d\n",p,sizeof(p)); p=&b; printf("b的地址为:0x%x,其字节数为:%d\n",p,sizeof(p)); p=&c; printf("c的地址为:0x%x,其字节数为:%d\n",p,sizeof(p)); return 0; } 
   

下面是在Dev-C++ 5.11中测试的结果(编译器是gcc):

下面是在VxWorks5.5的IDEtornado2.2中的测试情况(编译器是SIMNTgnu):

(该编译器不支持中文,所有把中文删掉了)

可以看出在我电脑上的Dev-C++ 5.11上,指针占用8个字节了,说明是64位系统,寻址能力(地址总线、和地址相关的寄存器也是64位)。

而VxWorks5.5的IDE tornado2.2中,因为是在嵌入式系统中,是32位系统,所以指针占用4个字节。


总结

现在的操作系统一般32位和64位比较多,在32操作系统下,int占4个字节,指针占4个字节。64位操作系统下,int也是占4个字节,指针占8个字节。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228518.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午6:50
下一篇 2026年3月16日 下午6:50


相关推荐

  • 使用PyCharm快速安装TensorFlow

    使用PyCharm快速安装TensorFlow本来之前写的《使用VirtualEnv在Mac安装TensorFlow》已经搭建好TensorFlow学习环境了,后来发现使用PyCharm搭建TensorFlow学习环境简直不要太方便了,就重新搭建了一遍!启动PyCharm,创建一个新项目,选择Newenvironmentusing->VirtualEnv,这样就是单独为新项目创建一个隔离的python环境。创建好新项目以后…

    2022年8月27日
    11
  • Ubuntu安装gcc失败的那些事儿「建议收藏」

    Ubuntu安装gcc失败的那些事儿「建议收藏」想在虚拟机上运行一个C程序输入gcc-ohellohello.c编译C语言文件嗯?找不到gcc。。。那就下载gcc输入gcc安装命令sudoaptinstallgcc安装包即将下完的时候提示下载错误,(我滴天,什么人间疾苦!!!)有几个软件包下载不了,还建议我使用sudoapt-getupdate或者加上–fix-missing那就屈尊采纳一下它的建议使用sudoapt-getupdate更新了一下软件资源(然并卵。。。)再试一下sudoaptinstallgc

    2022年7月24日
    45
  • p6操作教程_pc6视频教学

    p6操作教程_pc6视频教学在开发的过程中,我们经常会遇到由于sql语句书写错误导致的bug,那么如何来解决这种困扰呢?如果方法执行完了可以打印出完整的sql语句,就可以方便我们判断执行的是否正确,所以我们希望有一个可以打印sql语句的插件。p6spy就是一款这样的工具,下面给大家介绍一下p6spy的使用。使用p6spy需要做以下三步:1. 导入jar包:将jar包复制到项目中去,记得要buildpath一下。我用…

    2022年10月5日
    6
  • 非常详细的rsyslogd配置文件解析

    非常详细的rsyslogd配置文件解析Rsyslog配置文件详解发表于2年前(2014-02-1017:25)  阅读(9805) | 评论(3) 10人收藏此文章, 我要收藏赞1rsyslog服务和logrotate服务======================================================================rsyslog是一个sysl

    2022年8月15日
    14
  • 淘宝抢购Python脚本

    淘宝抢购Python脚本想买mate40,但总是抢不到,所以想试着能不能写个脚本代码。第一步:把想要抢购的商品加进购物车,注意:脚本是对购物车内全部商品进行下单操作,所以不够买的商品最好先从购物车内删除。第二步:写好Python脚本,在抢购之前运行,并设置好抢购时间。Python脚本实现安装Python。我安装的是anaconda安装webdriver扩展。它是Selenium模块的一部分。Selenium是一个用于Web应用程序测试的工具,用于测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。Selen

    2022年4月29日
    52
  • Webdriver下载及使用

    Webdriver下载及使用Chrome浏览器驱动下载地址:http://chromedriver.storage.proxy.ustclug.org/index.htmlFirfox浏览器驱动下载地址:https://github.com/mozilla/geckodriver/releasesIE浏览器驱动下载地址:https://www.selenium.dev/downloads/Edge浏览器驱动下载地址:https://developer.microsoft.com/en-us/microsoft-edg…

    2026年1月27日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号