“的sizeof”知道数组的大小函数在C不工作
问题描述:
int main()
{
int laiArreglo[] = {5,8,2,3,1,4,6,9,2,10}, liElemento;
printf("\nInsert the number: ");
scanf("%d", &liElemento);
ShowNumber(laiArreglo);
return 0;
}
void ShowNumber(int laiArreglo[])
{
int liContador;
printf("\nNumbers: ");
for (liContador = 0; liContador < sizeof (laiArreglo)/sizeof (int); liContador++)
{
printf("%d ", laiArreglo[liContador]);
}
}
我在主要使用(的sizeof(laiArreglo)/的sizeof(int)的),它里面的工作完美,但是,现在它的功能不起作用,为什么?。“的sizeof”知道数组的大小函数在C不工作
答
请记住,数组"decays"的一个指针,以它的第一个元素。当你使用
sizeof(laiArreglo)
从main
这个名字,它的计算结果
10*sizeof(int)
,而不是
sizeof(int*)
,因为它是one of the cases where decay dosen't happen。
当您使用
ShowNumber(laiArreglo);
将它传递给一个函数,确实发生衰变。所以上面的语句相当于
ShowNumber(&laiArreglo[0]);
,当你使用
sizeof(laiArreglo)
从功能ShowNumber
,它的计算结果
sizeof(int*)
为laiArreglo
是一个指向int
指向阵列的第一个元素的地址laiArreglo
。
答
在你的函数ShowNumber()
,你过去是一个指针,而不是一个阵列。
因为它是一个指针而不是数组。 – BLUEPIXY 2015-04-04 14:04:46
'ShowNumber'的参数是一个'int *'。你必须传递一个额外的参数来表示数组的大小来修复它。 – 2015-04-04 14:05:13