strlen()与sizeof
strlen()函数是用来计算一个字符串中的字符长度。
sizeof关键字是以字节为单位返回运算对象的大小。
对于一个字符串数组:char array[20] 来说,当我们将字符串 “ABCDEFG”填入数组后;
strlen(array) = 7,而sizeof(array) = 20。
即strlen()函数求的是字符串的实际长度,从数组开始到遇到第一个’\0’为止;
sizeof则是计算整个array的字节数。
两者的区别:
- sizeof是取字节运算符(关键字),strlen是函数。
- siezof 用于一个结构类型时或变量,返回实际的大小,用于数组时,返回全部数组的尺寸。
- strlen()函数求的是字符串的实际长度,从数组开始到遇到第一个’\0’为止,并且长度不包含’\0‘。
- 数组做sizeof的参数不退化;但数组作为strlen的参数会退化为指针。
- 对字符串进行sizeof操作的时候,会把字符串的结束符"\0"计算进去的,进行strlen操作求字符串的长度的时候,不计算\0的。
如下列代码:
void Func(char str_arg[100]){
printf("%d\n", sizeof(str_arg));
}
int main(void){
char str[] = "Hello";
printf("%d\n", sizeof(str));
printf("%d\n", strlen(str));
char*p = str;
printf("%d\n", sizeof(p));
Func(str);
}
判断32位系统下程序的输出结果为多少?
答案:6 5 4 4