c++中希望用数组作为函数的引用参数的代码该怎么写

c++中希望用数组作为函数的引用参数的代码该怎么写,第1张

因为数组名是一个地址,你可以把这个地址作为函数的参数传递进去就可以了。举例如下:

int a[3]={1,2,3};

int avg(int a,int k)

{

int sum = 0;

for(int i=0;i<k;i++) sum += a[i];

return sum;

}

二维数组的也是传地址作为参数,只是在调用的时候以“数组名+行序”这样的形式来调用。

数组名就是指针,例如:

#include <stdioh>

void pr(char p)

{

printf(p);

}

void main(void)

{

char s[] = "abc";

pr(s);

}

扩展资料:

注意事项

非数组类的声明尽量以指针的方式进行比较好。倘若一个指针指向的内存并不是一个数组,那么采用数组名的声明方式或许就会给人产生错误的引导。类似的,如果指向的是一个数组区域,则会给人以更加丰富的信息。例如:

int main(int argc,char argv[])

{

/ code here /

}

int main(int argc,char argv)

{

/ code here /

}

两种方式完全等价,但是前面一种能够更清晰地看出:这个参数是指向某个元素起始地址的指针,而后面的这种方式则不能够直观地看出这种含义。

不对。int,char或者自定义的类可以通过值参数和引用参数两种方式传递给函数,数组不行。

数组是两种指针传递:

void

sort(int

a);

//对于指针a来说是值传递,对于数组来说是指针传递

void

sort(int

a[100]);

//这种方法类似于引用,但实质上还是指针传递

所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。

所以在数组中只能存储相同类型的类对象。

要存储多个对象,只需要定义一个类对象数组,然后赋值进去即可。

如类名为A,要存储最多100个对象,需要定义为

A array[100];

然后对于任意的一个对象b,要存储到array的第i个元素中(i在0到99之间)的赋值语句可以写作:

array[i] = b;

1, 变量作为参数,这是单向值传递。即将数据传给被调函数后,与调用函数就不相关了,必须通过函数值返回 *** 作结果。

如有函数声明:void swap(int a,int b); //功能是交换a,b值,但事实上对调用函数没有影响,因为swap函数的局部变量a,b在该函数执行完释放掉了,其值也就丢失了。

2 指针、数组作为参数,这是地址传递,指针和数组可以看成是指向一个或一片连续空间的指针(区别是:一个为变量地址,一个常量地址),它们传递的是所指数据或数据区的地址,这使得函数直接 *** 作的就是原数据区的数据。好处是可以直接通过函数改变调用函数中的多个数据。

如有函数声明:void swap(int a,int b); 传递是指向所指空间的地址,执行后,直接交换了调用函数中的数据;

再如: void max(int a[],n),求数组a中的最大值。也是传递数组的地址, *** 作的是调用函数的数组元素。

3引用作为参数,引用就是别名,其实也是地址传递,但它是常量地址

形参和实参只要维数对应就可以了

例如

函数中 proc(int a[][10]) 可以省略第一维的大小,因为c语言编译系统不检查第一维的大小,只要第二维大小相同,形参数组第一维可以与实参不同。

主函数中 先定义了b[][10]

引用时:proc(b)即可

即把2维数组b得首地址即b[0][0]的地址传给形参a,因为数组名本身既是指针常量,所以在函数中对数组a中元素的 *** 作会改变数组b中元素得值。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/12181796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存