sizeof(char *)与sizeof(char)的区别
时间: 2023-11-30 21:11:34 浏览: 28
`sizeof(char *)` 和 `sizeof(char)` 是两个不同的概念。
`sizeof(char *)` 返回指针类型(char *)所占用的字节数,这通常是一个指针所占用的空间大小,通常为4或8个字节,取决于操作系统和编译器的位数。
而`sizeof(char)`返回的是`char`类型的大小,通常是1个字节。字符类型的大小是一个固定值,因为它们是最小的内存单元。
因此,`sizeof(char *)` 和 `sizeof(char)` 是两个不同的值,它们之间没有直接的关系。
相关问题
sizeof char*
sizeof(char*) 是用来获取 char* 类型变量的大小(字节数)的运算符。
在大多数平台上,char* 的大小通常是指针的大小,即指针所占用的字节数。这个大小与具体的操作系统和编译器有关,一般情况下是 4 字节或 8 字节,分别对应 32 位和 64 位系统。
例如,在一个占用 4 字节的指针大小的平台上,sizeof(char*) 的结果是 4。
需要注意的是,sizeof 运算符返回的是类型或变量所占用的内存空间的字节数,而不是字符串的长度。如果想获取字符串的长度,可以使用 strlen() 函数。
c++.char ** a;a = (char**)malloc(sizeof(char**));
你创建了一个指向指针的指针 `a`,并使用 `malloc` 函数为其分配了内存空间。根据你的代码,你分配了 `sizeof(char**)` 字节的内存空间,但是通常情况下应该使用 `sizeof(char*)` 来分配指针所占的内存空间。另外,你也可以使用 `calloc` 函数来分配内存并初始化为零。
正确的写法应该是:
```c
char **a;
a = (char**)malloc(sizeof(char*));
```
或者使用 `calloc` 函数:
```c
char **a;
a = (char**)calloc(1, sizeof(char*));
```
记得在使用完 `a` 后,要调用 `free(a)` 来释放之前分配的内存空间,以避免内存泄漏。