sizeof函数介绍
- sizeof函数是C语言中的一个算数运算符,用于计算数据类型或变量所占内存的大小,单位是字节
- 语法为sizeof(type)
示例函数
#include<stdio.h>
int main()
{
int arr[10] = { 0 };//将十个元素全部初始化为零
unsigned int y = sizeof(int);//一个整型所占内存的大小
unsigned int x=sizeof(arr);//数组的内存大小
printf("%d\n", x);
return 0;
}
y是一个整型数据的大小,占据4个字节,因为arr数组中有10个整型元素,所以是40个字节
sizeof和strlen函数的区别
- strlen是一个库函数使用时应包含头文件#include<string.h>,而sizeof是一个运算符号;
- sizeof的返回类型是unsigned int返回格式为%d,strlen函数的返回类型是size_t返回格式为%zd
- strlen计算时只计算’\0’之前的字符个数,sizeof计算的是所占空间的大小;
- strlen只能用char类型做参数,而sizeof可以使用任意类型做参数;
- strlen函数中末尾必须有’\0’,否则会出现随机值,而sizeof不会
strlen示例代码
#include<string.h>
int main()
{
char arr1[] = { 'a','b','c' };
size_t x = strlen(arr1);
printf("x=%zd\n", x);
return 0;
}
输出结果
当加入’\0’后
#include<string.h>
int main()
{
char arr1[] = { 'a','b','c','\0'};
size_t x = strlen(arr1);
printf("x=%zd\n", x);
return 0;
}
输出结果
sizeof示例代码
#include<string.h>
int main()
{
char arr1[] = { 'a','b','c'};
int x = sizeof(arr1);
printf("x=%d\n", x);
return 0;
}
输出结果
当加入’\0’之后
#include<string.h>
int main()
{
char arr1[] = { 'a','b','c','\0'};
int x = sizeof(arr1);
printf("x=%d\n", x);
return 0;
}
输出结果
- strlen计算时不包含’\0,而sizeof包含’/0’
示例代码
#include<string.h>
int main()
{
char arr[] = "abcde";
unsigned int x = sizeof(arr);
size_t y = strlen(arr);
printf("x=%d,y=%zd", x, y);
return 0;
}
输出结果