sizeof不能用于指针
时间: 2023-10-26 20:20:31 浏览: 35
是的,你说得对。sizeof运算符用于计算数据类型或变量所占用的字节数,而指针本身只是一个内存地址,它所占用的空间大小是固定的(通常是4字节或8字节,取决于操作系统的位数),因此使用sizeof运算符计算指针的大小是没有意义的。不过,你可以使用sizeof运算符计算指针所指向的对象的大小,例如:
```
int arr[10];
int *p = arr;
size_t size = sizeof(*p); // 计算指针p所指向的对象int的大小,结果为4字节(32位系统)
```
相关问题
sizeof结构体指针
在C语言中,sizeof操作符用于获取一个变量或数据类型所占用的存储空间大小,单位为字节。当对一个结构体指针使用sizeof操作符时,会返回该指针所占用的存储空间大小,而不是所指向的结构体所占用的存储空间大小。
例如,假设有如下的结构体定义:
```
struct Person {
char name[20];
int age;
float height;
};
```
那么,定义一个指向该结构体的指针可以这样写:
```
struct Person *p;
```
对于该指针,使用sizeof操作符会返回该指针所占用的存储空间大小,通常是4或8字节(取决于编译器和操作系统的位数)。而如果要获取该指针所指向的结构体所占用的存储空间大小,可以使用sizeof操作符和解引用运算符:
```
sizeof(*p)
```
这将返回该结构体所占用的存储空间大小,即24字节(假设int占用4字节,float占用4字节,且指针占用8字节)。
sizeof计算结构体指针大小
sizeof是C/C++中的一个运算符,用于计算数据类型或变量的大小(以字节为单位)。当计算结构体指针的大小时,sizeof返回的是指针本身的大小,而不是指针所指向的结构体的大小。
例如,如果有一个结构体定义如下:
```c
struct MyStruct {
int a;
char b;
float c;
};
```
那么计算结构体指针的大小可以使用sizeof运算符:
```c
size_t size = sizeof(struct MyStruct*);
```
这里的size将会是指针的大小,通常是4个字节或8个字节(取决于操作系统和编译器的位数)。