指针为什么是4个字节?

如果你回答跟操作系统位数有关,哪再问问:int为什么在xp里的TC是2字节,而在linux里的gcc是4字节?

这个和你机器硬件和操作系统的寻址空间有关系。如果在64位机器和操作系统上面,指针是64位(8字节)。当然你也可以在64位操作系统上面用32位兼容模式,那样就是4字节了。
TC是模拟的老的16位环境,所以是16位的。你的linux是32位,int就是32位。int的大小和具体的C编译器的实现有关系。可以是16,32,或者64位。你可以看看C语言的书里面有讲。不是固定大小的。

如果你想使用固定大小的整数类型,可以使用int32_t, 是一种扩展,在头文件pstdint.h里面可以找到。(不是C语言的标准,但实际中经常使用,很方便)。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-02-26
和环境默认的寻址模式有关。TC的8086模式直接寻址是16位的所以指针是2字节,但事实上TC里还有4字节的长指针用来进行跨段的寻址。

Windows和Linux在x86模式下寻址模式是32位的,多以指针就是4字节。
而x64模式下指针就是8字节了。
第2个回答  2009-02-26
指针实际上就是地址,因此指针的长度就是地址的位数,在32位XP系统下,指针就是32位,也就是4个字节。
第3个回答  2019-01-12
算是编译器的规定。
指针变量存放指向地址。
32位机上地址是4字节(每字节8位)无符号整数。
所以一个指针变量占4字节就够了。
用sizeof
可以测定
大小。
第4个回答  2009-02-26
谁回答的和操作系统位数有关,拖出去打

是和编译器的位数有关,
对于16位编译系统,比如TC,int是2字节
对于32位编译系统,比如VC,GCC,int是4字节

为什么指针变量所占字节数都为4
因为指针它要保证能将所有的地址存放下来,所以根据计算机的寻址能力,32位的机器最小要保证指针变量的大小是4个字节,当然如果你想开8个字节当然也没有问题,但是开出来浪费。在64位机器上面开8个字节比较合理。下面是原答案,用一个小小的比喻来解释这个问题例如:8位的机器 将所有的内存条插满,总共...

c语言中,指针变量为何只占4字节?
一般指针占4个字节,如果是64位系统,它可描述的地址空间为0~2^64-1,如果是64位的编译器,指针占8个字节。

一个指针为什么占四个地址
简单的讲就是规定 具体讲的话,原因是这样的 首先一个指针占4个字节,也就是32bit,他要保存一个内容的首地址,计算机内容的地址我们可以认为是一个十六进制数,一般由6位数构成,换成二进制占6*4 = 24bit,指针要保存这个地址值,就必须大于等于24bit,你才能将此地址存储下来,如果小于24bit,指针...

为什么指针是4个字节
在32位系统中,指针的宽度是4个字节宽的,即32位 什么是指针,指针就是内存中指向一个地址的内存变量,本身是做内存地址记录 指针的作用,“引用传递”它主要起到“间接引用”的作用 指针的设计起因 内存只不过是一个存放数据的空间,就好像我 的看电影时的电影院中的座位一样。每个座位都要编号,我们的内存要存放各...

32位和64位系统中为什么指针都是4个字节的长度?
32位和64位系统中,编译器为了相互兼容,所以指针都是4个字节长度。字节(Byte \/bait\/ n. [C])是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。

一个指针占几个字节?原理是什么呢?
一个指针在32位的计算机上,占4个字节。首先,我们要明白,指针就是地址,地址就是指针。 而地址是内存单元的编号。所以,一个指针占几个字节,等于是一个地址的内存单元编号有多长。我们都知道,在计算机中,CPU不能直接与硬盘进行数据交换,CPU只能直接跟内存进行数据交换。而CPU是通过数据总线、地址...

指针为什么是4个字节?
这个和你机器硬件和操作系统的寻址空间有关系。如果在64位机器和操作系统上面,指针是64位(8字节)。当然你也可以在64位操作系统上面用32位兼容模式,那样就是4字节了。TC是模拟的老的16位环境,所以是16位的。你的linux是32位,int就是32位。int的大小和具体的C编译器的实现有关系。可以是16,32...

为什么一个指针变量占4字节
算是编译器的规定。指针变量存放指向地址。32位机上地址是4字节(每字节8位)无符号整数。所以一个指针变量占4字节就够了。用sizeof 可以测定 大小。

C++面试八股文:指针占用多少个字节?
这是因为,指针的大小取决于它能表示的最大内存地址的长度。在32位系统中,内存地址使用32位二进制表示,能表示的最大值为4GB,所以指针占用4个字节。而在64位系统中,内存地址使用64位二进制表示,能表示的最大值为16EB(约为18.4亿TB),因此指针需要占用8个字节来表示。需要注意的是,指针的大小...

究竟是什么决定了指针变量是4个字节,电脑的内存分为哪几部分啊,可以具...
同一时间)能一次处理的二进制数的位数叫字长。计算机处理数据的速率,和它一次能加工的位数以及进行运算的快慢有关。(2)指针,是一个无符号整数(unsigned int),它是一个以当前系统寻址范围为取值范围的整数。一般的CPU、windows操作系统、VC++都是32位的,所以指针变量是4个字节。

相似回答