您现在的位置是:首页 >技术杂谈 >CC++的size_t详解网站首页技术杂谈
CC++的size_t详解
简介CC++的size_t详解
2023年5月21,周日早上:
今天早上在看别人的代码时遇到了size_t这个数据类型,于是记录一下自己的学习成果。
什么是size_t
官方文档:https://cplusplus.com/reference/cstring/size_t/
size_t是一个无符号整数类型
size_t全称是size_type,也就是表示大小的数据类型
什么地方会用到size_t
1、需要接收字符串长度时:
char str[] = "Hello world!";
size_t len = strlen(str); // 计算字符串长度
2、充当数组的下标(也可以说是索引)时:
因为数组的下标不能是负数,而size_t正好是无符号整数,所以size_t不可能是负数。那为什么不用int呢?因为int是有符号整数,可以为负数,所以不用int。
size_t i = 0;
int arr[] = {1, 2, 3};
int x = arr[i];
一个完整的例子:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int *arr=(int*)malloc(10*sizeof(int));
for (size_t i = 0; i < 10; ++i) {
arr[i] = i + 1; // 赋值
}
for (size_t i = 0; i < 10; ++i) {
printf("arr[%zu] = %d
", i, arr[i]); // 打印数组各元素的值
}
free(arr); // 释放分配的内存空间
return 0;
}
3、用作内存分配函数中参数和返回值类型
许多内存分配函数(如 malloc、calloc、realloc 等)使用 size_t 类型来表示需要分配空间的大小,也使用这种类型来返回所分配内存对象的大小。
void* malloc (size_t size);
void* calloc (size_t num, size_t size);
void* realloc (void* ptr, size_t size);
4、用于标准库函数中参数和返回值类型
标准库中的很多函数,如字符串处理函数 strlen、字符复制函数memcpy 等都使用 size_t 来描述传入/返回值的长度信息。
size_t strlen ( const char * str );
void * memcpy ( void * destination, const void * source, size_t num );
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。