6.数组元素作为函数参数有两种形式:一种把数组元素作为实参使用,另外是把数组名作为函数的形参和实参使用
数组元素作为实参就是值传递,不要求形参也是数组元素,但是用数组名作为函数参数,则形参必须是一个数组。此时不是数值传递,而是值传递。此时两个数组共享一个内存单元。
类型不匹配会造成错误,如果长度不一致,不致于导致编译出错,但是结果可能是错误的。
7.形参数组的长度可以不写。形参数组传递的是地址,长度都是8个字节。数组的长度信息会丢失。(不管什么类型的数据,数据的内存地址在内存中占用8个字节)
8.注意数组的总字节数的格式是sizeof(数组名),另外注意和数组长度进行区分,数组的总字节数/元素该数据类型所占用的字节数。数据要注意长度,不要越界!
二维数组的初始化注意可以省略第一维。第二维的数可以理解成一组几个元素。
二维数组的首地址是二维数组第一个数的地址,每一行的地址是每一行第一个数的地址。
(深入理解一下事例:求多人多门课的平均成绩)
#include
void main()
{
int i,j,score[2][3]=((1,2,3)(2,3.4)),v[2],sum=0,average,max;
max=a[0][0];
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
}
sum=sum+a[i][j];
}
v[i]=sum/i;
sum=0;
}
average=(v[0]+v[1]/3;
printf("max=%d %d %d\n",a[i][j],i,j);
printf("the 平均成绩是%d",v[i]);
printf("每课平均成绩是%d\n",average);
}
9.二维数组元素作为函数参数,是一个变量。数组名作为函数的参数print_arr(score)score是一个常量,保存的是数组的首地址。
形参数组可以取实参数组的一部分,其余部分不起作用。
打印地址的格式printf(“%p”,a)
further readings
|
|