【发布时间】:2016-09-20 03:13:18
【问题描述】:
例如,
int len1=strlen(字符串);
size_t len1 = strlen(string1)
使用 size_t 对编译器行为或代码运行时间或内存有何影响? 我完全知道其中的区别,之前在另一个帖子中已经回答了这个问题,但我担心 RAM 的行为。
【问题讨论】:
例如,
int len1=strlen(字符串);
size_t len1 = strlen(string1)
使用 size_t 对编译器行为或代码运行时间或内存有何影响? 我完全知道其中的区别,之前在另一个帖子中已经回答了这个问题,但我担心 RAM 的行为。
【问题讨论】:
size_t 可以存储一个数组可以获得的最大大小,因为它基本上可以与可寻址的内存空间一样大。
unsigned int 仅由其最小范围(0 到 65535)定义,但可能更大。例如,您希望它在 32 位机器上是 32 位的。
【讨论】:
size_t 未签名,而 int 已签名。此外,在某些平台上,SIZE_MAX 可能大于sizeof(int)。因此,要生成可移植代码,您应该使用size_t(参见第 7.18.3 节)。
数据类型:size_t
这是一个无符号整数类型,用于表示对象的大小。 sizeof 运算符的结果就是这种类型,并且 malloc(请参阅无约束分配)和 memcpy 等函数 (请参阅复制字符串和数组)接受这种类型的参数 指定对象大小。在使用 GNU C 库的系统上,这将是 unsigned int 或 unsigned long int。
【讨论】: