网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

C++中“数组形参”介绍

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/02/28

【编者按】:网学网ASP.net为您提供C++中“数组形参”介绍参考,解决您在C++中“数组形参”介绍学习中工作中的难题,参考学习。

    C++中其实根本不存在“数组形参”,传入时,实质上只是传入指向其首元素的地址这种从数组到指针的自动转换被赋予了一个迷人的术语"退化".同样,一个函数型参数也会退化成指针,但和数组会丢失边界不同,退化的函数具有良好的感知力,可保持其"参数类型"和"返回类型".
       如何希望函数只接收固定数量元素的数组,由于被传入时数组的边界被忽略,所以最好再多传递一个参数用来表示数组大小.如果实参使用指针,那例2的技巧就无效了,多维数组是数组的数组,因此形参是一个指向数组的指针。

//例1
    void average(int arr[]) //void average(int* arr)
    ...{...}
    int Array[] = ...{1,2,3,4};
    average(Array);

//例2
    void average(int (&arr)[4]) //只接收4个元素的数组,多一个或少一个都不行.
    ...{...}
    int Array[] = ...{1,2,3,4}; //4个
    average(Array); //right
    //int Array[] = {1,2,3}; //3个
    //average(Array); //wrong

//例3
    void average(int (&arr)[4])
    ...{...}
    int *Array = new int[4]; //对比例2 #22行
    average(Array); //wrong

//例4
    //void average(int (*arr)[4])
    void average(int arr[][4]) //推荐这样写,更清晰
    ...{...}
    int array[2][4] = ...{...{1,2,3,4},...{5,6,7,8}};
    average(array);

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号