首页 > 代码库 > c++ 函数(1)
c++ 函数(1)
函数中,数组如何传参?
整个数组传过去是不可以的。自然联想到指针和引用。
- 因为数组指针本质上就是多重指针,所以以下三种传参方式都是可以的:
void print(const int*);void print(const int[]); //优点:可以看出函数意图void print(const int[10]); //优点:“10”代表了我们的期望维度,但因为int[10]本质上是int*,所以与前两种实际上是一样的。
const修饰符是可加可不加的。当我们可能会一不小心时,最好加上。
- 当然啦,也可以用引用传参。但是其一般有一个局限性:限定了数组长度。
为什么呢?我认为是引用必须绑定一个实体。
#include <iostream>using namespace std;void print(int (&arr)[]){ //报错,应在[]内加上数字 for (auto elem:arr){ cout << elem << endl; }}void ass(int ia[], int len){ for (int i = 0; i < len; i++){ *ia++ = i; }}int main(){ int a1[10], a2[20]; ass(a1, 10); ass(a2, 20); print(a1); print(a2); return 0;}
- 如何传递一个多维数组呢?
明确一个概念:在c++语言中其实没有真正的多维数组。所谓多维数组其实是数组的数组。
void print(int matrix[][10], int rowsize)
或者:
void print(int (*matrix)[10], int rowsize)
不能漏掉第一维以后的数组维度!!!为什么呢?不是在前面说int[]就等于int*吗?
解释是:如果不知道其他维度,在使用诸如array[n][m]时,编译器就无法正常寻址。因为int的值是固定的,所以省略掉没有什么关系。
今天就整理到这里。
c++ 函数(1)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。