⑴ 一个指针占用几个字节
一个指针变量在内存中占两个字节(small模式编译),一个指针变量在内存中占四个字节(32位机器上),一般都是32位机器的,所以四个字节咯。
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所指向的内存区、指针本身所占据的内存区。
(1)指针是否占用存储空间扩展阅读:
使用指针来读取数据,在重复性操作的状况下,可以明显改善程序性能,例如在遍历字符串,查取表格,控制表格及树状结构上。对指针进行复制,之后再解引用指针以取出数据,无论在时间或空间上,都比直接复制及访问数据本身来的经济快速。
指针的机制比较简单,其功能可以被集中重新实现成更抽象化的引用(reference)数据形别。许多编程语言中都支持某种形式的指针,最着名的是C语言,但是有些编程语言对指针的运用采取比较严格的限制,如Java一般避免用指针,改为使用引用。
⑵ 指针自身是不是不占用内存空间
问1:指针是一种数据类型,它指向其他变量的地址,不管它指向什么变量,用sizeof()测它的长度为四个字节(windows操作系统下),因为他存放的是地址(地址全是整数),遵循先定义后使用的原则,定义( int *p; )时不分配内存空间,当其赋值(p=&n)时分配内存空间(即变量n的地址),不存在“整形变量里的内存空间”这个学法;问2:哈哈,已在问一回答了。
⑶ 指针不时占用8个字节的存储空间么我的我什么现实9位
相差9是因为你有的数组长度不是偶数,编译器选择对齐,留下一个字节的空
指针变量的长度是8,必须放在能被8整除的地址,尾数只有两种选择,要么是0,要么是8
而字符数组可以从任何地址开始,因为每个元素都是char,是1对齐的。
你从这段代码的执行结果判断指针9个字节,是假设指针变量p和数组abc在内存中连续排列的,中间没有留空,不过这不是事实。
⑷ C语言中指针占物理内存空间吗
根据不同平台占的不一样,Ubuntu 64bit 上占8个字节。可以用这个方法看, int *i; printf("%d\n",sizeof(i));
⑸ C基础问题,空指针占内存么
你说NULL吗,NULL编译时就解析成0放在代码里。
至于 pointer * p;
不管p = NULL还是其他的,p都占空间
⑹ 在C语言中一个指针占用多少字节。
指针即为地址,指针几个字节跟语言无关,而是跟系统的寻址能力有关。譬如以前是16为地址,指针即为2个字节,现在一般是32位系统,所以是4个字节,以后64位,则就为8个字节。
(6)指针是否占用存储空间扩展阅读:
1)指针的含义
指针不同于一般变量,存的是变量的地址,在同一架构下地址长度都是相同的(cpu的最大寻址内存空间),所以不同类型的指针长度都一样比如说一个char1字节,可以存在0x0,也可以位于0xFFFFFFFF,比如你的32位系统。
2)指针的范围
指针长度为4,在64位操作系统下那么就都是8了,而和char占用1字节还是100字节无关,指针的范围只和机器字和系统有关。
3)变化的范围
如果你输出的是444,说明指针长度为4字节可以记录的地址范围是0x00000000~0xFFFFFFFF,这个范围才是指针变量的值。
4)指针的介绍
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型、指针所指向的类型、指针的值或者叫指针所指向的内存区、指针本身所占据的内存区。
⑺ 指针的作用是什么啊
第一,指针的使用使得不同区域的代码可以轻易的共享内存数据。当然小伙伴们也可以通过数据的复制达到相同的效果,但是这样往往效率不太好。因为诸如结构体等大型数据,占用的字节数多,复制很消耗性能。
但使用指针就可以很好的避免这个问题,因为任何类型的指针占用的字节数都是一样的(根据平台不同,有4字节或者8字节或者其他可能)。
第二,指针使得一些复杂的链接性的数据结构的构建成为可能,比如链表,链式二叉树等等。
第三,有些操作必须使用指针。如操作申请的堆内存。还有:C语言中的一切函数调用中,值传递都是“按值传递”的。如果要在函数中修改被传递过来的对象,就必须通过这个对象的指针来完成。
(7)指针是否占用存储空间扩展阅读
指针的表现形式是地址,核心是指向关系指针运算符“*”的作用是按照指向关系访问所指向的对象.如果存在A指向B的指向关系,则A是B的地址,“*A”表示通过这个指向关系间接访问B。
如果B的值也是一个指针,它指向C,则B是C的地址,“*B”表示间接访问C如果C是整型、实型或者结构体等类型的变量或者是存放这些类型的数据的数组元素,则B(即C的地址)是普通的指针,称为一级指针,用于存放一级指针的变量称为一级指针变量。
⑻ 指针数组在内存中所占的空间怎么算
用 sizeof 计算。一个指针 4个字节。
float (*a1)[3]; 一个指针 指向有3个元素的数组。 4个字节
char (*a4)[3]; 一个指针 指向有3个元素的数组。 4个字节
float *a2[3]; 指针数组,有3个 指针。 12个字节。
char *a5[3]; 指针数组,有3个 指针。 12个字节。
float a3[3]; float 数组,有3个元素,sizeof(float) * 3 = 12 个字节
char a6[3]; char 数组,有3个元素,sizeof(char) * 3 = 3 个字节.
⑼ 指针占不占内存指针变量呢好糊涂啊。。。
指针是变量,占有内存,它的内容是它指向内容的地址,访问的时候先读取它的内容,也就是另一段内存的地址。如果分不太清楚的话,可以仔细看下《c primer plus》比较基础的,希望能帮到你,谢谢。
⑽ 指针类型对象占用内存多少字节存储空间啊
一个机器字的长度
这意味着在16位cpu上是16位 = 2字节
32位cpu上是32位 = 4字节
64位上就是64位也就是8字节了
通常情况是这样,不过根据编译器和系统架构的不同这也不是绝对