关于C指针和数组的问题。
作者:管理员 来源:新浪爱问 日期:2008-04-16
void fun1(void)
{
char a[100];
printf("fun1: %d\n",sizeof(a));
}
void fun2(char a[100])
{
printf("fun2: %d\n",sizeof(a));
}
其结果为:
fun1: 100
fun2: 4
请问这是为什么?
问题补充:
能不能说的再详细些,还有就是从内存的角度想呢?
电脑问题网给出的最佳答案
void fun2(char a[100])
fun2 函数的形式参数是 char 类型的指针,指针占4个字节,所以
fun2 中的 sizeof(a) 等于4
fun1 中的 sizeof(a)求的是 a数组的长度!等于100
其他回答
fun1 中的 sizeof(a) 指的是 a数组的长度!
fun2 中的 sizeof(a) 指的是 a 数组的起始地址 所以是4
原因是fun2 函数参数是 char a[100]这样的调用 ,是地址!