首页  

sizeof与strlen的区别     所属分类 c 浏览量 602
两者结果类型都是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性能监控

网络流量单位说明