啊达 https://bbs.21ic.com/?549219 [收藏] [复制] [RSS] 共建学习联盟

日志

sizeof与strlen

已有 995 次阅读2009-11-30 08:32 |个人分类:C总结|系统分类:单片机

 


char* ss = "0123456789";
sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针
sizeof(*ss) 结果 1 ===》*ss是第一个字符

char ss[] = "0123456789";
sizeof(ss) 结果 11 ===》ss是数组,计算到\0位置,因此是10+1
sizeof(*ss) 结果 1 ===》*ss是第一个字符

char ss[100] = "0123456789";
sizeof(ss) 结果是100 ===》ss表示在内存中的大小 100×1
strlen(ss) 结果是10 ===》strlen是个函数内部实现是用一个循环计算到\0为止之前

int ss[100] = "0123456789";
sizeof(ss) 结果 400 ===》ss表示再内存中的大小 100×4
strlen(ss) 错误 ===》strlen的参数只能是char* 且必须是以''\0''结尾的

char q[]="abc";
char p[]="a\n";
sizeof(q),sizeof(p),strlen(q),strlen(p);
结果是 4 3 3 2     


 char *p = malloc( 100 );
 strcpy(p, "hello");


sizeof(p)    ====>> 指针类型只占4字节,只有数组能取得内存长度


strlen(p)  ====》》5 字符长度


 


 


 


 


 


 


 


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)