-
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);
-
}
-
答案:6,5,4,4
-
当数组当函数参数传递的时候,已经退化为指针,也就是说str_arg会是指针,所以sizeof(指针)=4.
-
另一个例子:
-
#include<stdio.h>
#include<string.h>
void Func(char str_arg[2])
{
int m = sizeof(str_arg); //指针的大小为4
int n = strlen(str_arg); //对数组求长度,str_arg后面的那个2没有任何意义,数组已经退化为指针了
printf("%d\n",m);
printf("%d\n",n);
}
int main(void)
{
char str[]="Hello";
Func(str);
}
-
可以得知,为4,5,因为str_arg已经退化为指针了,所以后面的那个2是没有意义的。