斗鱼郭mini电臀完整:在C语言中"char *p"占用多少内存空间

来源:百度文库 编辑:中科新闻网 时间:2024/05/08 20:54:36
我觉得应该是1个字符的空间,因为char 型的数据类型是占用一个字符空间的,可是书本上却指明是2个字符,又没有解释,所以我想寻求各位的帮助,谢谢哦

  在C语言中指针是一个unsigned 类型的无符号数,其所占内存字节一般是和计算机的CPU字长是一致的,拿32位计算机来说,指针所占的内存空间一般为4个字节,不管char *还是int *抑或是float *,都是4个字节。


  程序员可以使用sizeof运算符获取数据类型或者某个变量的内存所占字节数。比如

printf("%d\t%d\t%d\n", sizeof(char *), sizeof(int *), sizeof(float *));

用sizeof()函数检测一下就行了。
例如:
#include<stdio.h>
void main()
{
char c = 'a';
char *p = &c;

printf("%d\n",sizeof(p));
}

运行以后就能看到结果。

char *p;
算做一个数组 char p[];
数组最末尾都加'\0'作结束!而'\0'也占一个字节!
在加本身一个,所以就两个了!
补充:跟机器位数无任何关系!我自己测过的!

如果是32位机器,那么p占用4个字节
如果是是16位机器,就是占用2个字节
这主要是根据机器的硬件判断的

char *p 是一个指针,它保存的内容是一个地址,指向(*p),而(*p)才是那个字节