|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
这两个函数在UNIX的编程中运用的太普遍了,不能不把它们深刻理解。先看一个例子: char *a = "012"; char b[] = "012345"; char c[10] = ""; struct my_struct{int a; char b;} ss[10];程序输出为:sizeof(a)=4, strlen(a)=3sizeof(b)=7, strlen(b)=6sizeof(c)=10, strlen(c)=0sizeof(ss)=80, sizeof(ss)/sizeof(ss[0])=10sizeof(int)=4, sizeof(char)=1总结: 1: sizeof(指针)结果是指针的大小,sizeof(数组名)结果是数组实际的长度; 2: strlen是针对字符串的函数,是根据字符串中的'\0'的位置来判断长度的; 3:结构体的sizeof操作返回的是结构体占用的字节数,包括了字节对齐的情况,一般来说,编译器会把结构体的长度定为结构体中长度最长的那个属性的长度的整数倍。 而结构数组的长度,正确的取得方式为sizeof(ss)/sizeof(ss[0])。</wbr |
|