sizeof与strlen的区别
所属分类 c
浏览量 760
两者结果类型都是size_t
size_t和int区别
sizeof
sizeof 是运算符
指针 返回指针变量占用大小,4个字节(32位系统) 8个字节(64位系统)
数组 数组所有元素占用的空间大小
在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小
用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间
数组 编译时分配的数组空间大小
指针 存储该指针所用的空间大小
类型 该类型所占的空间大小
对象 对象的实际占用空间大小
函数 函数的返回类型所占的空间大小,函数的返回类型不能是void
strlen
参数必须是字符型指针 char*
运行时计算
不区分是数组还是指针,读到 NULL 为止返回长度
NULL 不计入字符串的长度
注意
char* 与 char[] 的区别
数组名作为参数时,退化成指针 char*
#include "stdio.h"
#include "string.h"
void show_sizeof(char* str1,char* str2,char* str3,char* str4){
printf("%ld %ld %ld %ld \n",sizeof(str1),sizeof(str2),sizeof(str3),sizeof(str4));
}
int main(){
char str1[20]="hello";
char* str2="hello";
char str3[]="hello";
char str4[7]={'a',};
// 20 8 6 7
printf("%ld %ld %ld %ld \n",sizeof(str1),sizeof(str2),sizeof(str3),sizeof(str4));
// 数组退化成指针 sizeof 返回 char* 指针大小
// 8 8 8 8
show_sizeof(str1,str2,str3,str4);
// 5 5 5 1
printf("%ld %ld %ld %ld \n",strlen(str1),strlen(str2),strlen(str3),strlen(str4));
return 0;
}
上一篇
下一篇
c 和 Java 格式化输出
C语言各种类型变量初始化
grafana忘记密码重置
size_t和int区别
linux性能监控
网络流量单位说明