c语言函数参数数组 C语言函数参数数组长度

c语言怎么将数组作为函数参数传入?

一维数组的元素作为函数实参,与同类型的简单变差指量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参

站在用户的角度思考问题,与客户深入沟通,找到龙州网站设计与龙州网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、做网站、企业官网、英文网站、手机端网站、网站推广、域名申请、虚拟空间、企业邮箱。业务覆盖龙州地区。

数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组

修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。

#includestdio.h

//数组作为函数参数,可以省略元素个数

//数组作为函数参数,传递是整个数组的地址,修改猜庆此了函数形参数组元素的值,穗迅会影响到外面的实参数组

void change(int array[])

{

printf("array ==%p\n",array);

array[0] = 100;

}

int main()

{

int ages[6] = {10,11,13,15,11,18};

printf("array ==%p\n",ages);

change(ages);

printf("%d\n",ages[0]);

return 0;

}

输出结果为: array ==0x7fff5be26c00

array ==0x7fff5be26c00

100

C语言获取函数参数的数组的元素个数

C语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数),通过数组占内存总空间/单个元素占内存空间大小,即可得到数组的元素个数

例如

但是,通过将数组作为函数参数胡戚衫传递到函数中,以获仔基得数组长度是不可行的

例如

原因:数组arr是函数参数,在函数中裤腔,arr只是一个指针(地址,系统在本函数运行时,是不知道arr所表示的地址有多大的数据存储空间,这里只是告诉函数:一个数据存储空间首地址),所以,sizoef(arr)的结果是指针变量arr占内存的大小,一般在32位机上是4个字节。arr[0]是int类型,sizeof(arr[0])也是4个字节,所以,结果永远是1。

如果想要在被调用的函数中,得知原数组的大小,可以再给函数添加一个参数,用于指定数组的大小,让外界调用函数前就讲数组的大小传递进来

c语言中数组名作为函数参数

要将数组长度作为一个参数传给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;

}


本文名称:c语言函数参数数组 C语言函数参数数组长度
文章起源:http://scjbc.cn/article/ddpjgse.html

其他资讯