C语言里指针指不论指向任何变量它自身都只占4个字节为什么?

指针不是只存放变量第一个字节的地址吗?那他不是应该占1个字节啊?

对啊
指针是存放地址用滴。。

打个比方,你要寄一封信,得写邮政编码吧。。
现在咱中国都用6个数字来代表一个县。。

好嘞,明白了吧,你声明一个指针的过程就相当于要一个信封,让指针指向变量的过程就像在信封上写上邮编。。让它来指向一个县。

至于你问为啥指针总占4个字节,就相当于在问我国邮政编码怎么是6位啊。。
因为是特么国家规定的。。无论你的邮编指向哪个县(对应指针指向变量),信封上的6个框框总不会变把。,
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-18
指针存放的是内存地址.
内存地址多少位,是由编译器决定的.
编译器如果是32位的,那么地址就是4字节.
如果是64位的,那么就是八字节.
不会因为存放数据类型的不同而变化.
就像家里的门牌号, 不管家里住多少人, 是别墅还是平房, 门牌号都是街道统一规定的.本回答被网友采纳
第2个回答  2013-03-09
这是编译器决定的,和int,char,long占几个字节一样。
在dos系统的TC编译器下就有2字节的指针,
在32位windows操作系统(XP,win7 32位)VC编译器下(最常用的环境)指针就是4个字节;
在64位windows(win7 64)的 VC(x64设置)下有8个字节的指针
第3个回答  2013-03-09
指针自己也是一个变量 只不过这个变量代表着一块内存地址。
因为32位系统地址宽度为4个字节。为了表示地址,指针长度就是32位本回答被提问者采纳
第4个回答  2019-09-27
一个指针变量在内存中占两个字节(small模式编译)
一个指针变量在内存中占四个字节(32位机器上)
一般都是32位机器的,所以四个字节咯。

c语言中,指针变量为何只占4字节?
所以最终,可能(因为有些指针是在寄存器上面的)在256字节的内存上面有一个指针占用了8位。最终的规律:8位计算机->指针大小是8位 32位计算机->指针大小是32位 。。。

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

C语言中一个指针占用多少字节
一个指针变量在内存中占两个字节(small模式编译),一个指针变量在内存中占四个字节(32位机器上),一般都是32位机器的,所以四个字节咯。指针即为地址,指针几个字节跟语言无关,而是跟系统的寻址能力有关。指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要...

关于C语言指针的问题
2。指针所指向的类型。 当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译 器将把那片内存区里的内容当做什么来看待。 从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符 *去掉,剩下的就是指针所指向的类型。例如: (1)int *ptr; \/\/指针所指向的类型是int (2)char *pt...

c语言中指针占多少个字节
指针占字节数和编译器有关.如果是16位编译器,那么指针占2字节.如果是32位编译器,那么指针占4字节 如果是64位编译器 那么指针占8字节.即 指针位数和编译器位数相同.

...中占几个字节,在C语言中数字为什么占四个字节?
在c语言中数据是有类型的,每种类型所占字节长度都有规定,如果超出存储范围就溢出,这与数据在内存中的存储方式有关。一般情况下编译器规定一个int型数据占4个字节,c语言中只规定了字符型变量占1个字节 ,其他的都没规定。 我们学习一门语言,就必须遵守它的规则。一般情况int型数据与机器的字长...

c语言中的指针,它储存的是变量的地址,那它自己本身的地址是怎样储存的...
指针变量,它是一个变量,而且不管他指向什么类型,他的大小都是恒定的(4个字节)。不要把指针看成什么奇特的东西,他就是一个普通的变量,只不过他和int类型不同之处在于,他存储的信息是一个地址。至于他本身的地址是怎么存储的,你可以问一下自己一个int型的数据的地址是怎么存储的。而这个问题...

C语言字符串字面量池
C语言的字面量其实是一个字符型的指针.如果这个指针在定义的时候出现了,那么它的生命周期和被赋值的变量一样.如果只是写上去了,但没有使用,那么它只会去CPU过一下, 然后就没了.它上面说的意思就是:char *p = "abcdefg";p本身只占4字节, 而且它是一个指针, 所以它是不可能会去保存abcdefg这个...

C语言,int变量为什么占4个字节?32位64位又是什么意思?
int变量占的字节数取决于机器的指令字长,32位的机器指令就是4字节。32位就是32个二进制位,就是4个字节;64位就是8字节

C语言,为什么int变量占4个字节,32位64位又跟这个有什么关系?
C语言的int变量具体占多少字节,跟计算机系统和编译器相关,有的计算机系统或编译器规定int变量占2个字节,有的则规定为4个字节,一般可以用sizeof(int)确定每个系统或编译器中规定的int变量的长度。32位和64位指计算机CPU中寄存器的长度,反映CPU一次可以处理的最大数据,它们是决定int变量的长度的一个...

相似回答