int类型以及指针的类型所占字节的大小,到底是由什么决定的?
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类型以及指针的类型所占字节的大小,到底是由什么决定的?相关推荐
- 指针变量的所占字节数大小确定
我们在编程过程中经常会用到指针变量,如果需要知道指针变量的大小,我们也可以很方便的使用sizeof来查看,但是指针变量的大小究竟和什么直接相关呢? 首先,我们需要知道:指针变量其本质是指向一个地址的变 ...
- 指针类型与指针指向类型理解
今天在看一些C语言面试题时,遇到这样一个题目: #include<studio.h>int main(){unsigned int a = 0xFFFFFFF7;unsigned char ...
- c语言中int和指针和字符所占字节
Linux下 sizeof(int);int 4字节 sizeof(char);字符1字节 char * p="12345"; sizeof(p);指针占4字节
- C++查看各种数据类型所占字节和最大最小值(数据范围)
#include<iostream> using namespace std; int main() { cout << "bool: \t\t" < ...
- c语言结构体struct所占字节数求解
原本觉的c语言学的还不错,今天看了一下c语言的有关书籍,看到求结构体大小的例子,心想这不是很简单吗,不就是把所有成员的大小加起来就行了,其实远没我想的简单,看来c语言还要继续学习哈哈. 先看一个实例 ...
- 一个int型指针占几个字节,跟指针的类型有关系吗?(2020.11)
由于这两天看的数据结构都跟C语言相关,这2天的代码中都遇到了指针的问题,所以今天就看了一些关于指针的博客,然后突然想到一个问题,一个int型的指针占几个字节. 一个int型变量占4个字节,那一个int ...
- 32/64位平台下char、short、int、long、指针等类型分别占多少字节
1.不同系统下数据类型的字节大小 32位系统和64位系统的区别在于long 和指针 其中,彩色部分代表的意思是该类型在三种平台下所占字节大小不同,黑色说明所占字节数相同! 2.32位系统下各个数据类型 ...
- double、long、unsigned、int、char类型数据所占字节数(C语言)
我喜欢简单粗暴一点的学习方式,怎么简单怎么来..... 所以不会去去写太多没用的东西. 和机器字长及编译器有关系: 所以,int,long int,short int的宽度都可能随编译器而异. 但有几 ...
- 在C语言中,double、long、unsigned、int、char类型数据所占字节数
和机器字长及编译器有关系: 所以,int,long int,short int的宽度都可能随编译器而异.但有几条铁定的原则(ANSI/ISO制订的): 1 sizeof(short int)<= ...
最新文章
- linux 设置mysql 数据库编码utf8
- linux 系统安装 升级glibc库2.14
- Linux 网卡驱动学习(九)(层二转发)
- Node.js 学习笔记(三)
- Hibernate最全面试题
- 使用jvisualvm通过JMX的方式监控远程JVM运行状况
- matlab进行差分检验,热传导方程几种差分格式的MATLAB数值解法比较
- 如何快速的将PDF文件转换成word?
- 【LensFlare镜头光晕】Unity3D奇葩实现
- 计算机毕业设计ssm宠物寄存中心计时收费系统
- C语言编程>第十七周 ⑤ 请补充fun函数,该函数的功能是:用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元。
- cesium 添加geojson数据,创建白模,创建label标签,并使用canvas自定义聚合背景图片
- 如何在大屏幕上滚动播放视频、图片和文字
- 深度学习框架之paddlepaddle
- 数据库 (基础数据库知识 )
- mysql给定两个时间段 获取两个时间段的所有日期
- 文本型数字转化为数值的6个公式
- Debian firmware:failed to load i915/kbl_dmc解决
- d3d12.dll丢失怎么修复-d3d12.dll修复工具下载
- 【OpenGL开发】VS2017+nuget配置OpenGL开发环境