#include&盟敢势袂lt;stdio.h>
//声明一个函数
voidpri荏鱿胫协ntArray(intvalues[5]);
intmain(intargc,constchar*argv[]){
//定义一个数组
intnums[5]={1,3,5,7,9};
//把数组传递给函数
printArray(nums);//结果只打印出:1和3
return0;
}
//实现该函数
//注意:如果数组作为函数的形参,那么在函数中就不能通过数组名计算数组的元素个数
//因为系统会自动将数组形参转换为指针,指针占用8个字节
voidprintArray(intvalues[5])
{
//1.动态计算元素个数
//其本质是:8字节/4字节
intlength=sizeof(values)/sizeof(values[0]);//结果发现永远都只有2个元素
//2.遍历数组
for(inti=0;i<length;i++){
printf("%i\n",values[i]);
}
}
扩展资料
传递数组作为参数时只传递了数组在内存中的首地址,但对于数组有多大,必须由数组长度来确定。否则的话函数中对于数组的操作可能会越界,即对原本不属于数组的内存进行了修改,这样可能会导致程序出错。
当然,假如能用其他方法来判断数组的结束地址,比如数组的最后一个元素设为一个特殊值,那么也可以不用传递数组长度。
参考资料来源: