int类型的大小仅仅是由 机器 的字长决定的,还是与机器的字长以及编译器都有关?  
  sizeof(int)=??  
   
  指针的类型是由什么决定的呢?  
  sizeof(Type   *)=??  
   
   
  我提出这个 问题 的缘由是:  
  林锐的高质量C++/C编程指南中有这样的题目:  
  二、以下为Windows   NT下的32位C++ 程序 ,请计算sizeof的值(10分)  
  char       *p   =   str   ;  
  int           n   =   10;  
  请计算                  
  sizeof   (   p   )   =       4       (2分)  
                       
  sizeof   (   n   )   =       4       (2分)

#include   <string.h>    
  #include   <stdio.h>    
  #include   <ctype.h>    
  #include   <stdlib.h>  
   
  int   main(void)    
  {    
        int   i;  
        char   *string;  
        printf("i   %d/n",sizeof(i));  
        printf("int   %d/n",sizeof(int));  
        printf("char   %d/n",sizeof(char));  
        printf("string   %d/n",sizeof(string));  
        system("pause");    
        i=10;  
        string="hahaha";  
        printf("i=10   %d/n",sizeof(i));  
        printf("string=hahaha   %d/n",sizeof(string));  
        system("pause");    
        return   0;    
  }    
   
   
  i   4  
  int   4  
  char   1  
  string   4  
  请按任意键继续.   .   .  
  i=10   4  
  string=hahaha   4  
  请按任意键继续.   .   .

一般情况下,微机上的   C/C++   编译器都是以机器字的长度作为整型和指针的长度的,很少有例外,这样你满意了吗?  
   
  在一些大型机上,可能会有所不同。

(1)int类型的长度??  
  ……准确的字节数依赖于机器和编译器……  
  现阶段32bit(即4字节)PC一般在绝大多数编译器下是32bit,当然也有的编译器是16bit(比如turbo   C)。最关键一点,只能小,不能大,这是因为即使编译器把它当作大于32bit了,但因为CPU字长只有32bit,所以也只能处理32bit的数。  
  同时需要注意的就是   在c标准中只是对不同的数据类型的数字范围设置了下界,但是没有上界。  
   
  (2)指针的类型是由什么决定的呢?  
  sizeof(Type   *)=??  
  ==================  
  指针的大小是由内存寻址空间决定的,即地址总线决定。  
   
  一般32位机寻址空间4G,所以指针占4字节;  
   
  一般8位的 单片机 寻址空间是64k,所以指针占2字节。

int类型以及指针的类型所占字节的大小,到底是由什么决定的?相关推荐

  1. 指针变量的所占字节数大小确定

    我们在编程过程中经常会用到指针变量,如果需要知道指针变量的大小,我们也可以很方便的使用sizeof来查看,但是指针变量的大小究竟和什么直接相关呢? 首先,我们需要知道:指针变量其本质是指向一个地址的变 ...

  2. 指针类型与指针指向类型理解

    今天在看一些C语言面试题时,遇到这样一个题目: #include<studio.h>int main(){unsigned int a = 0xFFFFFFF7;unsigned char ...

  3. c语言中int和指针和字符所占字节

    Linux下 sizeof(int);int 4字节 sizeof(char);字符1字节 char * p="12345"; sizeof(p);指针占4字节

  4. C++查看各种数据类型所占字节和最大最小值(数据范围)

    #include<iostream> using namespace std; int main() { cout << "bool: \t\t" < ...

  5. c语言结构体struct所占字节数求解

    原本觉的c语言学的还不错,今天看了一下c语言的有关书籍,看到求结构体大小的例子,心想这不是很简单吗,不就是把所有成员的大小加起来就行了,其实远没我想的简单,看来c语言还要继续学习哈哈. 先看一个实例 ...

  6. 一个int型指针占几个字节,跟指针的类型有关系吗?(2020.11)

    由于这两天看的数据结构都跟C语言相关,这2天的代码中都遇到了指针的问题,所以今天就看了一些关于指针的博客,然后突然想到一个问题,一个int型的指针占几个字节. 一个int型变量占4个字节,那一个int ...

  7. 32/64位平台下char、short、int、long、指针等类型分别占多少字节

    1.不同系统下数据类型的字节大小 32位系统和64位系统的区别在于long 和指针 其中,彩色部分代表的意思是该类型在三种平台下所占字节大小不同,黑色说明所占字节数相同! 2.32位系统下各个数据类型 ...

  8. double、long、unsigned、int、char类型数据所占字节数(C语言)

    我喜欢简单粗暴一点的学习方式,怎么简单怎么来..... 所以不会去去写太多没用的东西. 和机器字长及编译器有关系: 所以,int,long int,short int的宽度都可能随编译器而异. 但有几 ...

  9. 在C语言中,double、long、unsigned、int、char类型数据所占字节数

    和机器字长及编译器有关系: 所以,int,long int,short int的宽度都可能随编译器而异.但有几条铁定的原则(ANSI/ISO制订的): 1 sizeof(short int)<= ...

最新文章

  1. linux 设置mysql 数据库编码utf8
  2. linux 系统安装 升级glibc库2.14
  3. Linux 网卡驱动学习(九)(层二转发)
  4. Node.js 学习笔记(三)
  5. Hibernate最全面试题
  6. 使用jvisualvm通过JMX的方式监控远程JVM运行状况
  7. matlab进行差分检验,热传导方程几种差分格式的MATLAB数值解法比较
  8. 如何快速的将PDF文件转换成word?
  9. 【LensFlare镜头光晕】Unity3D奇葩实现
  10. 计算机毕业设计ssm宠物寄存中心计时收费系统
  11. C语言编程>第十七周 ⑤ 请补充fun函数,该函数的功能是:用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元。
  12. cesium 添加geojson数据,创建白模,创建label标签,并使用canvas自定义聚合背景图片
  13. 如何在大屏幕上滚动播放视频、图片和文字
  14. 深度学习框架之paddlepaddle
  15. 数据库 (基础数据库知识 )
  16. mysql给定两个时间段 获取两个时间段的所有日期
  17. 文本型数字转化为数值的6个公式
  18. Debian firmware:failed to load i915/kbl_dmc解决
  19. d3d12.dll丢失怎么修复-d3d12.dll修复工具下载
  20. 【OpenGL开发】VS2017+nuget配置OpenGL开发环境

热门文章

  1. simHash 简介以及 java 实现
  2. Linux下Nginx的启动、停止等命令
  3. 计算机在线修改相片,全国普通计算机等级考试照片尺寸 在线调整的方法
  4. Vue3 项目遇到的问题
  5. sprintf用法(很强大啊)
  6. WPF 实现label换行
  7. Android的MVVM架构的单Activity应用实践
  8. 最全收集整理GitHub上受欢迎的Android UI Library
  9. Python中pprint与print的区别
  10. Java 中的三目运算符