函数 c 数组为参

分类:函数知识网浏览量:2760发布于:2021-06-22 00:43:53

函数   c  数组为参

第一个函数意思:把c数组的e元素开始的地址,和大小传到 setstar函数中作为形参.然后在函数中运行.把c[4]-c[9]中的元素e---j换成'*'.第二个函数意思:c数组的地址和数组的大小传到arrout函数作为形参,然后函数运行,在屏幕中打印c数组的元素.不知道是否说清楚.

C中数组名代表该数组的首地址,char s[]="abc"; s代表的就是'a'在内存中的地址 以地址作参数 ,实参和形参同时改变

大体上 仅仅是C/C++不支持整个复制的x.x但是 不嫌麻烦的话struct Array{ int content[0x100];};void foo(Array array){}

个人觉得, 形参和实参这种叫法让人摸不着头脑调用子函数时实际上是把数组的首地址传递给子函数, 子函数中的参数score这个变量得到这个地址, 就这么简单

在c、c++中,在函数参数中,指针与数组名是等同的.声明函数参数时这样:function (int arg[])在调用这个函数时,假设你已经声明了数组a[16],那么这样调用 function(a);直接传入即可.c、c++中数组作为函数参数时一维数组不需要指定长度.不过也正因如此,容易产生越界的问题,所以你也可以把数组的最大长度也作为一个参数传进去

E 数组作为参数不需要标示大小A 数组参数在函数中要被隐式转换为一个常量指针在使用F 定义数组值为int a[i] 这里的i应该是一个编译时期决定大小常量表达式.

如果上层调用函数不确定个数的时候就用第二种.例如上层需要scanf一个个数的时候.如果确定大小就用第一种.

要将数组长度作为一个参数传给average函数,不能在average函数内部通过int arrLen = sizeof(a) / 4;来计算数组长度.因为float average(float a[10])就相当于float average(float *a) ,所以sizeof(a)恒等于4,sizeof(a) / 4恒等于1.应该这样:float average(float a[10],int arrLen) { float sumSco = 0; for (int i = 0; i < arrLen; i++) { sumSco += a[i]; } return sumSco / arrLen; }

属于地址传递,在函数里修改的话,将直接影响调用方的数值.这是因为数组名代表这个数组的首地址,不过是静态不可更改的而已.在函数里用引用[i]下标时,就是找到这个数组第i号元素的地址进行修改的.所以是第于是地址传递.

写函数时写成指针,比如一维的是 *p 二维的就是 **p调用函数时,直接把对应的数组名当参数就行了,不要加[ ],传数组首地址进去就OK了