&引用;sizeof“;要知道数组的大小并不需要';t在C中的函数中工作 intmain() { 国际莱亚雷格洛[]={5,8,2,3,1,4,6,9,2,10},利勒门托; printf(“\n插入数字:”); scanf(“%d”和“liElemento”); ShowNumber(laiArreglo); 返回0; } 无效显示编号(int laiArreglo[]) { 国际利孔塔多; printf(“\n编号:”); 对于(liContador=0;liContador
我在main中使用了(sizeof(laiArreglo)/sizeof(int)),它工作得很好,但是,现在在一个函数中它不工作了,为什么?在您的函数中&引用;sizeof“;要知道数组的大小并不需要';t在C中的函数中工作 intmain() { 国际莱亚雷格洛[]={5,8,2,3,1,4,6,9,2,10},利勒门托; printf(“\n插入数字:”); scanf(“%d”和“liElemento”); ShowNumber(laiArreglo); 返回0; } 无效显示编号(int laiArreglo[]) { 国际利孔塔多; printf(“\n编号:”); 对于(liContador=0;liContador,c,arrays,function,sizeof,C,Arrays,Function,Sizeof,我在main中使用了(sizeof(laiArreglo)/sizeof(int)),它工作得很好,但是,现在在一个函数中它不工作了,为什么?在您的函数中ShowNumber(),您过去使用的是一个指针,而不是一个数组请记住,数组的名称指向指向其第一个元素的指针 int main() { int laiArreglo[] = {5,8,2,3,1,4,6,9,2,10}, liElemento; printf("\nInsert the number: "); scan
ShowNumber()
,您过去使用的是一个指针,而不是一个数组请记住,数组的名称指向指向其第一个元素的指针
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(int*)
从main
,它的计算结果为
sizeof(laiArreglo)
sizeof(laiArreglo)
而不是
10*sizeof(int)
事实就是这样
当你使用
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(int*)
要将其传递给函数,确实会发生衰减。因此,上述声明相当于
ShowNumber(laiArreglo);
当你使用
ShowNumber(&laiArreglo[0]);
从函数ShowNumber
,其计算结果为
sizeof(laiArreglo)
sizeof(laiArreglo)
as
lairreglo
是指向int
的指针,指向数组第一个元素的地址lairreglo
,因为它是指针而不是数组。ShowNumber
的参数是int*
。您必须传递一个表示数组大小的额外参数来修复它。