码迷,mamicode.com
首页 > 编程语言 > 详细

c++ 函数(1)

时间:2017-07-02 21:12:39      阅读:190      评论:0      收藏:0      [点我收藏+]

标签: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的值是固定的,所以省略掉没有什么关系。

今天就整理到这里。

c++ 函数(1)

标签:clu   pre   解释   使用   其他   一个   有一个   数组指针   ons   

原文地址:http://www.cnblogs.com/MyNameIsPc/p/7107119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!