C语言中,一个指针占用的空间是多大?和指针类型有关系吗?

如题所述

指针和其指向的数据类型有关系,你可以用sizeof()来做测试:
printf("the size of char is %d\n",sizeof(int*));
printf("the size of char is %d\n",sizeof(char*));

另外,指向结构体的指针就要看具体情况了,C语言还有所谓的“对齐机制”,就是结构体里的单元,所分配的空间实际上要参照结构体里“体积”最大的那个单元。就是说,比如一个char和一个int,char要向int看齐,一个char和一个double,char要向double看齐。关键就在于凑整数,凑成最大变量大小的倍数。当然,如果结构体里只有char型的变量或是数组,就不存在一定要凑数的问题了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-06-09
2字节,声明为far时为4字节

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

C语言中的指针是个什么类型的变量?
1.指针的类型 就是 指针 指针大小和内存的编址方式有关,只是恰好与无符号整形大小相同 他的大小是 4字节(32位) 就是类似 0012ff78(16进制 32位)注:如果你的电脑是64位电脑 那么他的大小就是8字节!2.指针是用来保存 内存地址的 内存有 按32位编制 和按64位编制之分 3.为什么要给指针定义类...

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

c语言中,指针变量为何只占4字节?
在C语言中,一般认为内存是一个大的字节数组,基本单位是字节,每一个字节包含一个地址,有多少个地址,是有CPU的地址总线位数决定的,所有的地址一般称作地址空间,比如32位的cpu,地址总线的位数是32位,它可描述的地址空间为0x0000 0000 0000 0000 ~ 2^32 - 1,正是因为此,所以在32位的系统上...

C语言:指针大小到底有什么决定呢?是编译器还是机器字长
指针大小和系统位数有关,如果你的电脑系统是32位,那么指针就占用4个字节,如果是64位的就占用8个字节,

c语言声明数组指针会分配内存吗?
题主你好 指针也是类型的一种 系统当然会为这个他分配内存 但是他只是分配一个指针大小的内存 一般为32位4个字节 64位8个字节。 他是一个指向数组的指针。而如果你不加括号*p[10] 就是生成一个有10个元素的数组,每个元素都是int *型 你可以用sizeof() 看看具体大小就明白了 不懂欢迎追问 ...

C语言中指针的长度!
一个基本的数据类型(包括结构体等自定义类型)加上“*”号就构成了一个指针类型的模子。这个模子的大小是一定的,与“*”号前面的数据类型无关。“*”号前面的数据类型只是说明指针所指向的内存里存储的数据类型。所以,在 32位系统下,不管什么样的指针类型,其大小都为 4byte。

...不是说所有的指针变量占用的内存大小是相同的吗??
所有的指针变量占用的内存大小是相同的,这个内存中保存的不是数据的值,而是指针的值,指针的值是一个内存地址,也就是指针指向数据的首地址,根据这个地址只能得到指针指向数据的开始位置,并不知道这是什么类型的数据,所以指针的类型就决定了数据的类型 ...

C语言指针的地址范围是多少?
C语言的指针地址范围是4字节空间,即从地址0x00000000~地址0xFFFFFFFF。但其中有些字段是系统保护的或所使用的硬件平台根本就不存在,所以用户指针并不能完全使用这个空间。不过用户不必担心,只要按规范使用指针,系统都会自动正确安排。C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种...

C语言 指针占4个字节 指针应该包含了一个数据地址 那这个数据地址占多大...
第二、指针大小为4个字节时,它就可以索引4g范围中任何一个值。第三、指针这4个字节自然也在内存中的,但它可以不由其他指针指向,否则就没完没了了。它的相对位置在编译时已经确定了,程序从main起点执行后,只要访问这个相对位置,取出其中的值,就可以找到指针包含的内容。反映到汇编上,就是有无 ...

相似回答