C语言中strlen()函数和sizof()函数分别怎么用?区别是什么

如题所述

1、用法:
strlen(char* pstr);//求的是字符串的实际长度
sizeof(类型说明符,数组名或表达式) 或sizeof ( 变量名)
比如说有以下数据类型:int arr[10] ,a; char *str="hello world"; sizeof(arr)/sizeof(a)/sizeof(str)都是可以的,但是只能使用strlen(str),而不能strlen(arr);
2、区别:
2.1 sizeof()是C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。
2.2 strlen()求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
总结的说来sizeof的适用范围更广,但是在返回实际的字符数组中的数据是,strlen()更方便,因为它返回的是实际的字符串长度,而sizeof是返回数组大小。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-02
strlen函数的参数是字符串,而sizeof函数的参数是类型或者变量,如果传入的是变量,则返回的是变量类型的大小,如果传入的是数组,则返回的是数组类型的大小乘以数组的元素个数,如果传入一个字符串指针,返回的是指针的大小。这两个新手容易混淆。如果仍有什么不明白,请追问。
记得采纳啊本回答被提问者采纳
第2个回答  2014-05-02
本来不想发言的,但看到楼上的回答说strlen()计算字符串时连'\0'也算上,我顿时无语。 那你调试一下看看,看看是不是算上'\0'? strlen()是遇到'\0'就结束计算,是不计'\0'的。这一点要记住。 sizeof()是计算变量或者类型占用内存空间的字节数。 如果有 char str[] = "asdfg"; printf("%d\n", strlen(str)); printf("%d\n",sizeof(char)); printf("%d\n",sizeof(str)); 结果会是 5 1 6 从上面就可以看出strlen()是不计'\0' char是类型,可以用sizeof()操作,char占用一个字节 因为str是变量,所以可以用sizeof()计算它占用内存的字节数,又一个字符是占用一个字节内存,所以数组str占用6个字节 以上就是sizeof()和strlen()使用的区别
第3个回答  2014-05-02
strlen() 是统计字符串的长度,要加上'\0'例如strlen("abcd");这时返回值是5因为还有一个'\0' sizof()是统计一个字符串占用的字节数例如sizeof("abcd");这里返回值是4,它不加最后的'\0'
第4个回答  2014-05-02
简单的说 strlen() 是统计一个字符串有几个字符,这时要算上'\0'。 sizof()是统计一个字符串占用了几个字节
相似回答