作者: 呵呵发布时间: 2024-05-17 18:56:38 浏览:2 次 发布地: 天气: 晴

        数组作函数参数 数组元素作函数的参数 可以采用传递普通变量一样的方式 以单个元素的方式实现数组元素的传递 "复制数据的方法" 由于形参是在函数定义时定义,并无具体的值,因此数组元素只能在函数调用时,作函数的实参 当用数组中的元素作函数的实参时 必须在主调函数内定义数组,并赋值 实参与形参之间是"值传递"的方式 函数调用之前数组已有初值 调用函数时,将该数组元素的值传递给对应的形参 两者的类型应当相同 例:求一堆数组a[4]的所有元素之和 数组元素作实参 float sumall(float a, float b,float c,float d,); {return(a+b+c+d);} main() {float sum; static floata[4]={1,2,3,4}; sum=sumall(a[0], a[1], [2], a[3]); printf("sum=%f\n",sum); } 数组名作函数的参数必须遵循以下原则 参数形式: 如果形参是数组名,则实参必须是实际的数组名 如果实参是数组名,则形参可以是同样维数的数组名或指针 数组定义: 要在修调函数和被调函数中分别定义数组 类型: 实参数组和形参数组必须类型相同 行参数组可以不指明长度 提示!!!!! C语言允许将整个数组作为函数的参数进行传递 数组名代表了该数组在内存中的首地址 采用的是按址传递方式 调用方式: 只需将数组名作为参数直接调用函数即可,无须使用下标 实参数组名将该数组的起始地址传递给形参数组 ,两个数组共享一段内存单元 编译系统不再为形参数组分配存储单元,实际上这种数组的传递是采用指针实现的! 分析程序的执行过程 #include printf(char str[]) { printf("%s",str); } main() { char string[20]="C Programming"; print(string);/*数组名作函数的实参*/ 调用时,实参数组将首地址string赋值给形参数组str 两个数组共同占用相同的内存单元,共享数组中的数据 string[0]与[0]代表同一个元素 形参数组的长度与实参数组的长度可以不相同 形参数组可以不指明长度 问题:形参数组长度与实参数组等长时会出现什么? 提示!!! 传递给函数的数组参数是不带()括号的数组名 在数组传递给函数时,为了使函数能够处理指定个数的数组元素,通常将数组的大小同时传递给函数 将数组传递被调函数,意味着被调用函数能够修改原始数组的元素的值 因为传递了数组名(数组的起始地址),所以被调函数能够准确地知道该数组的存储位置 被调函数在函数体中修改数组元素时就是在修改实际的数组元素 按址方式传递数组对提高性能是有意义的 如果采用传值的方式传递数组就会传递每一个元素的值拷贝 对于频繁传递的大型数组,对数组进行拷贝会消耗一定的时间和占用大量的存储空间 传递整个数组和传递一个数组元素之间的差别 #include #define SIZE 5 void modifyarray(int[ ],int); void modifyelemen(int); main() {int a[SIZE]={0,1,2,3,4}; int i; pritnf("\nTne values of the original array are:\n"); for(i=0;i<=SIZE-1;i++) printf("%/3d",a[i]; printf("\n"); modifyarray(a ,SIZE); /*以传址方式传递数组a*/ pritntf("The values os the modified array are:\n"); for(i=0;i<=SIZE-1;i++) printf("%3d",a[i]; printf("\nThe values of a[3]is%3d\n",a[3]); modifyelement(a[3]; printf("The values of a[3]is %3d\n",a[3]; } void modifyarray(int b[ ],int size) { int j; for(j=0;j<=size-1;j++) b[j]*=2; } void modifyelement(int x) {printf("velue in modifyelement is %3d\n",x*=2); }#计算机 #编程语言

评论:


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!