C语言数组学习心得(一)

 1.用数组名作为函数参数时,要求形参和相对应的实参都必须是类型相同的数组,都必须有明确的数组说明
2.用数组名作为函数参数,应在主调函数和被调函数中分别定义数组,且数据类型必须移植,否则结果将出错,形参数组中的[]必不可少,以表明该形参是一维数组
3.c编译系统对形参数组大小不做检查,所以形参数组可以不指定大小。 如果指定形参数组的大小,则实参数组的大小必须大于形参数组,否则因形参数组的部分元素没有确定值而导致计算结果错误
4.在普通变来那个作为参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元,在函数调用时发生的值传送是把实参变量的值赋予形参变量。在用数组名作为函数参数时,不是进行值传送,即不是把实参的数组的每一个元素的值都赋予形参的各个元素。因为实际上形参数组并不存在,编译系统不为形参数组分配内存。也就是数组名作为函数参数时,不是值得单向传递,而是把实参数组的首地址传给形参数组,这两个数组共用一段存储单元,即实参数组名和形参数组名共同指向数组的第一个元素。 在前面介绍过,数组名就是数组的首地址,因此在数组名作为函数参数时所进行的传送只是地址的传送,也就是说把实参数组U的首地址赋予形参数组名,形参数组名取得该首地址之后,也就等于有了实在的数组。
----------------------------------------------------------------------------------------------------------------------------------------------摘自《C语言宝典》 
#include


/*
 * 输入数组
 */
void input(int a[10],int n)
{
int i;
for(i=0;i
scanf("%d",&a[i]);
printf("\n");
}

/* 
 * 求最大值函数,形参为数组
 */
int maxa(int a[],int n)
{
int i;
int m;
for(i=1;i
if(m
return m;
}


/*
 * 输出数组中的n个数据元素
 */
void print(int *a,int n)
{
int  i;
for(i=0;i
printf("%4d",a[i]);
printf("\n");
}

int main(void)
{
int b[10];
int max;
input(&b[0],10);//调用输入函数,往数组b中输入10个数据元素
max=maxa(b,10);//求10个元素的最大值
printf("array max is %d\n",max);
printf("the array is :\n");
print(b,10);//输出数组b中的元素
}  

你可能感兴趣的:(嵌入式应用编程)