C 语言中的 size_t

Ammar Ali 2023年10月12日
C 语言中的 size_t

本教程将讨论使用 size_t 命令在 C 语言中定义无符号数据类型变量。

C 语言中的 size_t

size_t 命令在 C 语言中定义了一个无符号数据类型变量。无符号数据类型不能为负数,因此 size_t 命令是一种类似于 int 的数据类型,用于正整数值的情况。

例如,如果我们想计算某个东西或求一个数组的长度,我们可以使用 size_t 命令定义一个变量,该变量将保存一个正值,因为数组的计数和长度都是从 0 开始的,并且它不能为负。

sizeof() 函数以字节为单位返回数字的大小,我们可以使用 size_t 命令存储 sizeof() 函数返回的值。

size_t 数据类型使用至少 16 位内存来存储一个值。

许多函数如 strcspn()strlen() 函数的返回类型是数据类型 size_t。要使用 size_t 数据类型,我们必须包含 stddef.hstdint.h 头文件,因为 size_t 数据类型依赖于这两个头文件。

例如,让我们定义一个数组并使用 sizeof() 函数找到它的大小,并将其存储在 size_t 数据类型的变量中。请参阅下面的代码。

#include <stddef.h>
#include <stdint.h>
#include <stdio.h>

int main(void) {
  const size_t len = 100;
  int My_array[len];
  for (size_t i = 0; i < len; ++i) My_array[i] = i;
  size_t size = sizeof(My_array);
  printf("size of array = %lu\n", size);
}

输出:

size of array = 400

在上面的代码中,len 变量用于存储数组的长度,我们使用 for 循环来填充数组 My_array。我们使用 printf() 函数来打印给定数组的大小。

我们在 printf() 函数中使用%lu 字符串,因为 sizeof() 函数的输出是一个 size_t 类型的长无符号整数。

我们在 printf() 函数中使用\n 字符串在 size 变量的值打印后添加新行,否则光标将移动到新行。

我们可以使用 size_t 数据类型来存储对象的大小,如果我们想存储其他一些也可以是负数的值,我们应该使用另一种数据类型,例如 int

如果我们想找到两个 size_t 数据类型值之间的差异,在某些情况下我们无法找到确切的结果;如果第一个值小于第二个值,则结果应该为负,但在这种情况下结果将为正,因为差值是在两个无符号值之间计算的。

在这种情况下,我们必须使用另一种数据类型,如 intfloat。如果 size_t 数据类型实现是 64 位,它将是 64 位宽;如果实现是 32 位,它将是 32 位宽,依此类推。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook