通过前面指针的讲解,有同学问我拉,函数部分有些不理解,没问题,我们来对函数部分来点讲解,不过有同学理解上有些困难,不过学长建议要坚持学下去,后续讲解学长精心配图,利用思维导图的方式来帮助理解。
函数的概述
数组与函数
数组名作函数参数
#include <stdio.h>
float aver(float a[5])
{
int i;
float average, sum=a[0];
for(i=1; i<5; i++) //循环求和
sum += a[i];
average = sum/5;//平均数
return average;//返回值
}
int main()
{
float scores[5], average;
int i;
printf("Input 5 scores:\n");
for(i=0; i<5; i++)
scanf("%f", &scores[i]);
average = aver(scores);
printf("Average score is %5.2f", average);
return 0;
}
实参与形参宽度不一致的函数调用
void nzp(int a[7])
{
int i;
for(i=0;i<7;i++)
{
if(a[i]<0)a[i]=0;
printf("%d",a[i]);
}
}
main()
{
int b[5],i;
for(i=0;i<5;i++)
scanf("%d",&b[i]);
for(i=0;i<5;i++)
printf("%d",b[i]);
nzp(b);
for(i=0;i<5;i++)
printf("%d",b[i]);
}
形参数组a和实参数组b的长度不一致,编译能够通过,但数组a的元素a[5],a[6],a[7]无意义
总结
- 形参数组和实参数组的类型必须一致,否则将引起错误。
- 形参数组和实参数组的长度可以不相同,因为在调用时,只传送首地址而不检查形参数组的长度。
- 在函数形参表中,允许不给出形参数组的长度,