size_t
提高代码可移植性、有效性、可读性
void *malloc(size_t n);
void *memcpy(void *s1, void const *s2, size_t n);
size_t strlen(char const *s);
- size_t也是sizeof运算结果的类型
- 通常将一些无符号的整形定义为size_t,如unsigned int、unsigned long、unsigned long long。每一个标准C实现应该选择足够大的无符号整形来代表该平台上最大可能出现的对象大小。
- 参数中带有size_t的函数通常含有局部变量用来对数组的大小或索引进行计算
- 头文件
<stdio.h> <stdlib.h> <string.h>
scanf_s
- scanf在读取数据时不检查边界,会造成内存越界
char buf[5]={'\0'};
scanf("%s",buf);
- scanf_s有三个参数,最后一个参数n是接受缓冲区的大小,表示最多读取n-1个字符
char buf[5]={'\0'};
sacnf_s("%s",buf,5)