sizeof(p)等于多少
时间: 2023-09-30 11:03:04 浏览: 31
无法确定,因为不知道p是什么类型的指针。sizeof操作符返回的是指针类型在当前编译环境下所占用的字节数,不是指针所指向的对象类型的字节数。因此,sizeof(p)只能告诉我们指针p所占用的字节数,而不能告诉我们指针所指向的对象类型的字节数。如果想要获取指针所指向的对象类型的字节数,需要使用sizeof(*p)。
相关问题
未定义标识符sizeof(p)
在C语言中,sizeof是一个操作符,用于计算数据类型或变量的大小。在引用中提到的代码中,p是一个空类型指针,它没有指向任何数据类型或变量,因此sizeof(p)会导致编译错误,因为编译器无法确定p指向的数据类型的大小。如果要使用sizeof操作符,必须将指针指向一个完整的对象类型。例如,可以将p指向一个int类型的变量,然后使用sizeof操作符计算int类型的大小。示例代码如下:
```c
#include <stdio.h>
int main() {
int n = 10;
void* p = &n;
printf("Size of int: %lu\n", sizeof(int));
printf("Size of p: %lu\n", sizeof(p));
return 0;
}
```
输出结果为:
```
Size of int: 4
Size of p: 8
```
在这个例子中,p指向一个int类型的变量n,因此可以使用sizeof操作符计算int类型的大小。同时,由于p是一个指针类型,因此它的大小为8个字节(64位系统)。
sizeof(p)/sizeof(*p)
sizeof(p)/sizeof(*p)是一个C语言中常见的用法,用于计算一个数组的元素个数。其中p为指向数组的指针。
sizeof(p)表示指针p所占用的字节大小,sizeof(*p)表示指针p所指向的对象所占用的字节大小。通常情况下,这两个值相等。
通过sizeof(p)/sizeof(*p)的计算,可以得到数组的元素个数。这是因为数组在内存中是连续存储的,而指针p指向数组的首地址。所以,sizeof(p)/sizeof(*p)实际上是计算数组的总字节大小除以每个元素所占用的字节大小,从而得到数组的元素个数。
举个例子,如果有一个数组int arr[5],则sizeof(p)的值为4或8(根据编译器不同而定),sizeof(*p)的值为4。所以,sizeof(p)/sizeof(*p)的结果为5,即数组arr中元素的个数。
需要注意的是,sizeof(p)/sizeof(*p)只适用于静态数组,对于动态数组或者指向动态分配内存的指针,无法使用此方法来计算元素个数。此时需要通过其他方式来记录或者传递数组的长度信息。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)