C++中如何将数组作为函数参数

1.一维数组做函数参数

void func(int array[])

声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[ ]这样的形式表示array是一维数组的名字,用来接收实参传来的地址。因此,array【 】中的数值并无实际作用,编译系统对一维数组【】内的内容不予处理,形参一维数组的声明中可以写参数个数,也可以不写。函数首部的下面几种写法都是合法的,作用相同

void func(int array[10])  //指定数组元素个数和实参数组相同

void func(int array[])   //不指定元素个数

void func(int array[5])    //指定元素个数和实参数组不同

2.二维数组做函数参数

规定:如果将二维数组作为参数传递给函数,那么在函数的参数声明中必须指明数组的列数,数组的行数没有太大关系,可以指定也可以不指定。

因此二维数组作为函数参数正确写法如下所示:

void Func(int array[3][10]) 

void Func(int array[ ][10])

因为数组的行数无关紧要,所以还可以写成如下形式:

void func(int (*array)[10])

注意*array需要用括号括起来。这种形式的声明参数是一个指针,它指向具有10个元素的一维数组。因为[]的优先级比*的优先级高,故*array必须用括号括起来

不能把第二维或者更高维的大小省略,如下面的定义是不合法的:

 void Func(int array[ ][ ])

 void Func(int array[3][ ])

因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多少列。

实参数组维数可以大于形参数组,例如形参数组定义为: 

 void Func(int array[3][10]); 

而实参数组定义为:int array[5][10];     进行函数调用Func(array)时,由于数组在内存中是连续存放的,虽然形参与实参数组行数不对应,但是列数是相同的,具有相同的起始地址,这样可以访问到后续的值

 

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值