老师讲的时候说是占有2个字节,后来我在VC上做了实验,不是2个字节,老师讲可能与电脑本身有关,它可能占电脑的一个字,现在电脑一般都是32位的,也许以前电脑是16位的所以占2个字节
以前电脑系统是16位的,指针占用即为2个字节;电脑如果是32位系统,则指针占用是4个字节;电脑如果是64位系统,则指针占用是8个字节。
指针即为地址,指针几个字节跟语言无关,而是跟系统的寻址能力有关,譬如以前是16为地址,指针即为2个字节,现在一般是32位系统,所以是4个字节,以后64位,则就为8个字节。
指针不同于一般变量,存的是变量的地址,在同一架构下地址长度都是相同的(cpu的最大寻址内存空间),大小只跟系统的寻址能力有关,所以不同类型的指针长度都一样。
内存是由字节组成的,每个字节都有一个编号。指针变量主要是存放相同数据类型的变量的首址,这里的这个地址其实就是内存的某个字节的编号。而这个编号的确定是与地址总线有关,如果地址总线是32位,则它的寻址范围是0~2^32(0~4G),那么为一个字节的编址就会由32个0或者1组成,例如第一个字节的编址是32个0,最后一个的编址是32个1。一个字节有8位,32位则需要4个字节。简单的说32位的操作系统就是指:地址总线是32位的系统。那么,也就是说操作系统的位数决定了指针变量所占的字节数。
扩展资料:
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:
1、指针的类型,从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型;
2、指针所指向的类型,当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待;
3、指针的值或者叫指针所指向的内存区,指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为si zeof(指针所指向的类型)的一片内存区;
4、指针本身所占据的内存区,指针本身占据的内存这个概念在判断一个指针表达式(后面会解释)是否是左值时很有用。
参考资料来源:百度百科-指针
C语言中一个指针占用多少字节
一个指针变量在内存中占两个字节(small模式编译),一个指针变量在内存中占四个字节(32位机器上),一般都是32位机器的,所以四个字节咯。指针即为地址,指针几个字节跟语言无关,而是跟系统的寻址能力有关。指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要...
在C语言中"char *p"占用多少内存空间
在C语言中指针是一个unsigned 类型的无符号数,其所占内存字节一般是和计算机的CPU字长是一致的,拿32位计算机来说,指针所占的内存空间一般为4个字节,不管char *还是int *抑或是float *,都是4个字节。程序员可以使用sizeof运算符获取数据类型或者某个变量的内存所占字节数。比如 printf("%d\\t%d\\...
c语言中,指针变量为何只占4字节?
一般指针占4个字节,如果是64位系统,它可描述的地址空间为0~2^64-1,如果是64位的编译器,指针占8个字节。
一个指针类型的简单变量占用内存中的字节数位什么?
一个指针变量在内存中占两个字节(small模式编译),一个指针变量在内存中占四个字节(32位机器上),一般都是32位机器的,所以四个字节。在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。
一个指针占用几个字节
一个指针变量在内存中占四个字节(32位机器上),一般都是32位机器的,所以四个字节咯。指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所指向的内存区、指针本身所占据的内存区。
C语言中的指针是个什么类型的变量?
1.指针的类型 就是 指针 指针大小和内存的编址方式有关,只是恰好与无符号整形大小相同 他的大小是 4字节(32位) 就是类似 0012ff78(16进制 32位)注:如果你的电脑是64位电脑 那么他的大小就是8字节!2.指针是用来保存 内存地址的 内存有 按32位编制 和按64位编制之分 3.为什么要给指针定义...
C语言 指针占4个字节 指针应该包含了一个数据地址 那这个数据地址占多大...
--- 第二、指针大小为4个字节时,它就可以索引4g范围中任何一个值。第三、指针这4个字节自然也在内存中的,但它可以不由其他指针指向,否则就没完没了了。它的相对位置在编译时已经确定了,程序从main起点执行后,只要访问这个相对位置,取出其中的值,就可以找到指针包含的内容。反映到汇编上,就...
C语言 类型指针p、p+1,其中1所代表的字节数
一个字节有8个二进制位,4个字节就是32位,32位机的最大内存寻址范围就是32位,所以一个指针占4个字节完全够存一个指向任何内存的地址,至于这个地址存多少字节和指针无关,指针与内存关系就好比一个地址与仓库一样,仓库存多少东西,和地址没有任何关系。上面指针p、取的是地址,4个字节,p+1表示...
c语言中,指针变量为何只占4字节?
即00,01,10,11总共能表示1-4个门牌,这显然是不够的,如果开到8位,那么这个指针就能存放1,2,3,4,5…256。所以最终,可能(因为有些指针是在寄存器上面的)在256字节的内存上面有一个指针占用了8位。最终的规律:8位计算机->指针大小是8位 32位计算机->指针大小是32位 。。。
《C语言》课本中有一个例子看不懂,烦请指点
首先,理论上结构体类型长度的算法是其每一个属性的类型长度之和。其次,对于指针型比较特殊期长度由操作系统的位数决定,如果你是32系统那么就是32\/8=4字节。最后,针对本题,double型 8字节;struct F * next;指针型 4字节(如果你是32位系统的话)8+4=12字节。即:sizeof(struct F)=sizeof(...