温馨提示×

sizeof在c语言中的常见误区

小樊
82
2024-09-08 22:47:03
栏目: 编程语言

sizeof 是 C 语言中的一个运算符,用于计算数据类型或对象所占用的内存字节大小。在 C 语言中,sizeof 有时会被误解,以下是一些常见的误区:

  1. 对指针使用 sizeof:当对指针使用 sizeof 时,通常返回的是指针变量本身的大小,而不是指针所指向的数据类型的大小。例如,在 32 位系统上,所有类型的指针大小都是 4 字节,而在 64 位系统上,所有类型的指针大小都是 8 字节。
int *ptr;
sizeof(ptr); // 4 字节(32位系统)或 8 字节(64位系统),而不是 int 类型的大小
  1. 对数组使用 sizeof:当对数组使用 sizeof 时,返回的是整个数组所占用的内存字节大小,而不是数组中单个元素的大小。
int arr[5];
sizeof(arr); // 20 字节(int 类型假设为 4 字节),而不是单个元素的大小(4 字节)
  1. 对函数使用 sizeof:在 C 语言中,不能对函数使用 sizeof,因为函数不占用内存空间。尝试对函数使用 sizeof 会导致编译错误。

  2. 对结构体或联合体使用 sizeof:当对结构体或联合体使用 sizeof 时,返回的是整个结构体或联合体所占用的内存字节大小,包括任何填充字节。

struct Example {
    char a;
    int b;
};
sizeof(struct Example); // 8 字节(假设 int 类型为 4 字节,且存在 3 字节的填充)

为了避免这些误区,请确保在使用 sizeof 时明确了解其行为,并根据需要使用正确的数据类型或对象。

0