在C语言中一个指针占用多少字节。

老师讲的时候说是占有2个字节,后来我在VC上做了实验,不是2个字节,老师讲可能与电脑本身有关,它可能占电脑的一个字,现在电脑一般都是32位的,也许以前电脑是16位的所以占2个字节

第1个回答  推荐于2018-02-25
指针其实就是地址, 与它所指的基类型无关, 更与C语言无关, 只与机器有关. 如果你的机器是16位寻址的, 那指针就是16位的, 如果是32位寻址的, 指针也是32位的.
较特殊的是老式的X86, 它是16位的机器, 但采用了分段寻址, 所以指针是两个16位合起来的(但与真正的32位又不同)
所以看一下你的C编译器是在什么平台下运行的.
二个字节长度, 太老了吧. 即使TC, 一般也是上面说的, 两个16位(一个是段, 一个是偏移值). 只有在段内寻址, 才可能用16位, 即两个字节.本回答被提问者和网友采纳
第2个回答  推荐于2017-09-30

C语言规定一个指针占4个字节。


查看指针所占字节数可以用sizeof( )函数进行测试。如:

char a[] = "abcdefgh";
char *p = a;  // 定义一个指针变量,指向字符数组a
printf("%d\n", sizeof(p));  // 输出指针所占的字节数,输出4

第3个回答  2006-01-06
指针长度和运行程序的操作系统是有关系的,LZ的老师说是2在现在来说的确是错误的,一般编译器会把指针的长度定义为系统的字长(这点LZ应该坚持自己的想法呵呵),指针的长度在16位OS比如DOS上的确是2个字节,但是在32位的windows上,就是4位,很多老版本的C教材都是2个字节,这个不能笼统的说是错了,而是有它的历史原因在里面.所以LZ的老师应该多看看新版本的书籍了,教育应该和科技的发展接轨才可以呵呵~
第4个回答  2006-01-06
32位的电脑,整型、浮点型指针占4个字节,短整型2个,字符型1个,根据数据类型来。用sizeof函数也可以算出来。
第5个回答  2019-01-30

    指针占用多少字节,取决于所使用的编译器版本,编译器有16位、32位、64位之分,16位和32位编译器可以运行在32位操作系统上,而64位操作系统可以运行这三种编译器。

    16位编译器下,一个指针占用2字节;32位编译器下,一个指针占用4字节;64位下,一个指针占用8字节。

    当前(2019年1月)国内大部分电脑已经使用上了64位Windows操作系统,但Visual Studio等编程软件默认使用的编译器是32位编译器,因此最常见的情况是一个指针占用 4 个Byte。

    苹果的macOS系统自带clang编译器,默认是64位,因此通常在苹果电脑上编写c语言程序时,指针占用8个字节。

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(...

相似回答