标签:clu pre 解释 使用 其他 一个 有一个 数组指针 ons
函数中,数组如何传参?
整个数组传过去是不可以的。自然联想到指针和引用。
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的值是固定的,所以省略掉没有什么关系。
今天就整理到这里。
标签:clu pre 解释 使用 其他 一个 有一个 数组指针 ons
原文地址:http://www.cnblogs.com/MyNameIsPc/p/7107119.html