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.h
和 stdint.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
数据类型值之间的差异,在某些情况下我们无法找到确切的结果;如果第一个值小于第二个值,则结果应该为负,但在这种情况下结果将为正,因为差值是在两个无符号值之间计算的。
在这种情况下,我们必须使用另一种数据类型,如 int
或 float
。如果 size_t
数据类型实现是 64 位,它将是 64 位宽;如果实现是 32 位,它将是 32 位宽,依此类推。