数组作为函数参数

定义

数组可以作为函数的参数使用,进行数据传送。

数组用作函数参数有两种形式,一种是把数组元素(下标变量)作为实参使用;另一种是把数组名作为函数的形参和实参使用。

1、数组元素作为函数实参

数组元素就是下标变量,它与普通变量并无区别。因此它作为函数实参使用与普通变量是完全相同的,在发生函数调用时,把作为实参的数组元素的值传递给形参,实现单向的值传递。

2、数组名作为函数参数

注:(1)与数组元素作为函数参数不同的是,用数组名作为函数参数时,要求形参与相对应的实参都必须是类型相同的数组,否则会发生错误。

(2)用数组名作为函数参数时,并不是进行值的传递,即不是把实参数组的每一个元素的值都赋与形参数组的各个元素。因为实际上形参数组并不存在,编译系统并不为形参数组分配内存。

数据的传递:数组名就是数组的首地址。因此在数组名作为函数参数时所进行的传递只是地址的传递,也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也等于有了实际的数组,即实参与形参有一段共用的内存空间。

二维数组作为函数参数

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

因为函数调用时传递的是一个指针,它指向由行向量够成的一维数组。

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

void F(int a[5][5]); 

void F(int a[ ][5]);

或者

void F(int (*a)[10]); //星号和数组名需要用括号包起来,这种形式的声明参数是一个指针,它指向具有10个元素的一维数组。

不加括号的参数是一个数组,每个元素都是指针。

void Func(int *array[10]);//这时候参数相当于是声明了一个数组,该数组有10个元素,其中每个元素都是一个指向整型对象的指针。

实践二维数组作函数参数:

#include<iostream>
using namespace std;
void f(int (*)[3],int a);
int main()
{
int a[2][3]={
{1,1,1},
{2,2,2}
};
f(a,2);
}
void f(int (*a)[3],int l)
{
for(int i=0;i<l;i++)
for(int j=0;j<3;j++)
cout<<a[i][j]<<",";
cout<<endl;
}

c++学习笔记(五)的更多相关文章

  1. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

  2. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  3. java之jvm学习笔记五(实践写自己的类装载器)

    java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...

  4. Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  5. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. ES6学习笔记<五> Module的操作——import、export、as

    import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...

  7. muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor

    目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...

  8. python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍

    python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍 IDLE默认不能显示行号,使用ALT+G 跳到对应行号,在右下角有显示光标所在行.列.pycharm免费社区版.Su ...

  9. Go语言学习笔记五: 条件语句

    Go语言学习笔记五: 条件语句 if语句 if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } 竟然没有括号,和python很像.但是有大括号,与python又不一样. 例子: pa ...

  10. 【opencv学习笔记五】一个简单程序:图像读取与显示

    今天我们来学习一个最简单的程序,即从文件读取图像并且创建窗口显示该图像. 目录 [imread]图像读取 [namedWindow]创建window窗口 [imshow]图像显示 [imwrite]图 ...

随机推荐

  1. P6624-[省选联考2020A卷]作业题【矩阵树定理,欧拉反演】

    正题 题目链接:https://www.luogu.com.cn/problem/P6624 题目大意 \(n\)个点的一张图,每条边有权值,一棵生成树的权值是所有边权和乘上边权的\(gcd\),即 ...

  2. Python3入门系列之-----环境搭建

    前  言 最近一直在学习Python,想用笔记的方式记录自己踩过的那些坑.俗话说:好记性不如烂笔头. 分享给想学Python的小伙伴.目前本人在学习Python+selenium.接口自动化,有兴趣的 ...

  3. ASP.NET Core 学习笔记 第二篇 依赖注入

    前言 ASP.NET Core 应用在启动过程中会依赖各种组件提供服务,而这些组件会以接口的形式标准化,这些组件这就是我们所说的服务,ASP.NET Core框架建立在一个底层的依赖注入框架之上,它使 ...

  4. Java基础语法(语法、位运算、JavaDoc等)

    一.注释.标识符.关键字 1.注释(comments) 平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己编写的代码,但是当项目结构一旦复杂起来,我们就需要用到注释了! 注释并不会被程序执行, ...

  5. 题解 [SHOI2012]随机树

    题目传送门 Description \(n\le 100\) Solution Problem 1 不难看出,答案就是: \[1+\sum_{i=1}^{n-1} 2/(i+1) \] Problem ...

  6. noip2017D1T3逛公园(拓扑图上dp,记忆化搜索)

    QWQ前几天才刚刚把这个D1T3写完 看着题解理解了很久,果然我还是太菜了QAQ 题目大意就是 给你一个n个点,m条边的图,保证1能到达n,求从1到n的 (设1到n的最短路长度是d)路径长度在[d,d ...

  7. pandas 取 groupby 后每个分组的前 N 行

    原始数据如下: (图是从 excel 截的,最左1行不是数据,是 excel 自带的行号,为了方便说明截进来的) 除去首行是标题外,有效数据为 28行 x 4列 目前的需求是根据 partition ...

  8. UI BLOCK自定义枚举控件的宽度

    三步: 1.修改PresentationStyle属性为Radio Box 2.修改NumberOfColumns属性为指定的宽度(显示字符的个数) 3.将PresentationStyle属性改回O ...

  9. fpic 和 fPIC

    fpic 和 fPIC 区别 Code Gen Options (Using the GNU Compiler Collection (GCC)) 综下所述,生成适用于共享库的位置无关代码(PIC)时 ...

  10. 乘风破浪,遇见最美Windows 11之新微软商店(Microsoft Store)生态 - 安卓(Android™)开发体验指南

    什么是Windows 11的安卓(Android)应用 2021年6月25日,微软召开线上发布会,对外宣告下一代Windows操作系统Windows 11,Windows 11为用户重新打造的Micr ...