"sizeof" 知道数组的大小在 C 函数中不起作用
"sizeof" to know the size of an array doesn't work in a function in 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]);
}
}
我在 main 中使用 (sizeof (laiArreglo) / sizeof (int)) 并且它工作得很好但是,现在 在函数内部它不起作用,为什么? .
在您的函数 ShowNumber()
中,您传递的是 指针 而不是 数组 。
请记住,数组的名称 "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
.
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]);
}
}
我在 main 中使用 (sizeof (laiArreglo) / sizeof (int)) 并且它工作得很好但是,现在 在函数内部它不起作用,为什么? .
在您的函数 ShowNumber()
中,您传递的是 指针 而不是 数组 。
请记住,数组的名称 "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
.