您的位置:首页 > 其它

庆祝开版的--没有垃圾的bolg站

2004-11-04 10:36 435 查看
刚刚建好blog,感觉挺好用的,这是测试文章了----比较sizeof和strlen的用法
-----------------------------------------------------------------------------------------------------------------

1.strlen---一个函数
size_t strlen(const char *string);
需要string.h的支持,返回字符串中字符的个数(不包括/0).
strlen("hello!")==6

2.sizeof---一个操作符
sizeof unary-expression
sizeof ( type-name )

以字节的形式给出一个变量或者类型的存储量.返回值类型为size_t(unsigned int).
若是操作heap变量数组那么只能得到指针的长度

char szHello[]="hello,world!"
sizeof szHello=13;
sizeof(szHello)=13;

char *pstr=szHello;
sizeof pstr=4;
sizeof(pstr)=4;

sizeof *pstr=1;
sizeof(*pstr)=1;

char szPath[MAX_PATH]

如果在函数内这样定义,那么sizeof(szPath)将会是MAX_PATH,但是将szPath作为虚参声明时(void fun(char szPath[MAX_PATH])),sizeof(szPath)却会是4(指针大小)

示例:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息