打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
与LSGO一起学“14 数组(14.13 数组名与函数)”

14.13 数组名与函数

我们分别对比一下普通变量和数组在函数传参时的不同。

void a(int); //函数原型

int main()

{

  int x;

  a(x);//函数调用

  return 0;

}

void a(int x) //函数定义

{

  //有一个x的副本

}

void a(int[]);//函数原型

int main()

{

  int x[20];

  a(x);//函数调用

  return 0;

}

void a(int x[])//函数定义

{

  //无副本

  //只有一个数组x的内存地址

}

数组通常都比较大,为了节省内存,C++规定数组在程序中只能有一个原本,由于这个原因,数组在函数中是不可能再创造一个副本的。那么数组该如何传递给函数呢?

数组虽然不能将数值传递给函数,但是却能将内存地址传递给函数。

程序演示:

#include<iostream>

using namespace std;

int *func1(int [],int);

void func2(int*, int);

void print(int[], int);

int main()

{

    const int N = 10;

    int a[N] ={ 0 };

    //传递指针

    int* b = func1(a, N);

    print(a,N);

    cout <<endl;

    print(b,N);

    cout <<endl;

    func2(a,N);

    print(a,N);

    return 0;

}

int *func1(int x[],int length)

{

    for (int i = 0;i < length;i++)

       *(x+i)= i + 10;

    return x;

}

void func2(int* x,int length)

{

    for (int i = 0;i < length;i++)

       x[i] = i+ 20;

}

void print(int x[],int length)

{

    //利用下标的方式输出数组元素

    for (int i = 0;i < length;i++)

       cout <<x[i]<<'\t';

    cout <<endl;

    //利用指针的方式输出数组元素

    for (int i = 0;i < length;i++)

       cout <<*(x + i) <<'\t';

}


与LSGO一起学系列图文之 C++

第1章 初识C++

   1.1 C++简介

   1.2 C++的发展过程

   1.3 C++与C有什么不同

   1.4 学习C++之前需要先学C吗?

   1.5 C++与其他语言的区别

   1.6 Visual Studio 2010编译器

第2章 做一个简短的C++程序

   2.1 简单的屏幕输出小程序

   2.2 输出语句的使用

   2.3 std::介绍

   2.4 iostream与iostream.h的区别

   2.5 重名问题

   2.6 注释

   与LSGO一起学“C++上机小练习01”

第3章 初步了解函数

   3.1 一个简单的函数

   3.2 函数的参数

   3.3 函数的返回值、参数与变量

   3.4 函数的声明与定义

   3.5 局部变量

   3.6 全局变量

   与LSGO一起学“C++上机小练习02”

第4章 C++数据类型

   4.1 C++数据类型引入

   4.2 什么是变量

   4.3 变量及数据如何存储在内存上

   4.4 布尔型

   4.5 字符型

   4.6 双字节型

   4.7 整型概述

   4.8 为什么使用补码

   4.9 整型变量的定义

   4.10 浮点型变量

   4.11 常量

   4.12 枚举型常量

   与LSGO一起学“C++上机小练习03”

第5章 if语句与逻辑运算符

   5.1 什么是语句

   5.2 什么是块

   5.3 什么是表达式

   5.4 什么是运算符

   5.5 赋值运算符与数学运算符的联合

   5.6 什么是自加与自减

   5.7 表达式的优先级

   5.8 关系运算符

   5.9 if语句

   5.10 else语句

   5.11 else if语句

   5.12 if语句的嵌套

   5.13 带括号的嵌套语句

   5.14 逻辑“与”运算符

   5.15 逻辑“或”运算符

   5.16 逻辑“非”运算符

   5.17 逻辑运算符的优先级

   5.18 运算式的真假关系

   5.19 三目运算符

   5.20 三目运算符的优先问题

   5.21 三目运算符的使用问题

   5.22 三目运算符的型别问题

   5.23 三目运算符在字符型变量中的使用

   5.24 复杂的嵌套if语句

   5.25 逗号运算符

   与LSGO一起学“C++上机小练习04”

   与LSGO一起学“C++上机小练习05”

第6章 面向对象

   6.1 什么是面向对象程序语言

   6.2 面向对象程序语言的主要特征

   6.3 什么是类,对象和成员

   6.4 声明一个类

   6.5 命名习惯

   6.6 定义一个对象

   6.7 定义类或对象容易犯的错误

   6.8 共有与私有

   6.9 成员函数的声明和定义

   6.10 内联函数

   6.11 头文件与源文件

   6.12 const成员函数

   6.13 构造函数

   6.14 默认构造函数

   6.15 析构函数

   6.16 析构对象数组

   与LSGO一起学“C++上机小练习06”

   与LSGO一起学“C++上机小练习07”

   与LSGO一起学“C++上机小练习08”

第7章 循环语句

   7.1 循环语句的老祖宗——goto语句

   7.2 while语句

   7.3 while语句的其他用法

   7.4 continue和break语句

   7.5 永不休止的while循环

   7.6 do……while循环

   7.7 for循环

   7.8 灵活的for循环

   7.9 条件为空的for循环

   7.10 嵌套的for循环

   7.11 switch语句

   7.12 switch语句常见错误

   7.13 switch的菜单功能

   与LSGO一起学“C++上机小练习09”

   与LSGO一起学“C++上机小练习10”

第8章 指针

   8.1 什么是地址

   8.2 用指针来保存地址

   8.3 空指针

   8.4 指针与变量类型

   8.5 用指针来访问值

   8.6 容易混淆的概念

   8.7 指针对数值的操作

   8.8 更换指针保存的地址

   8.9 为什么使用指针

   8.10 内存泄漏

   8.11 在堆中创建对象

   8.12 在堆中删除对象

   8.13 访问堆中的数据成员

   8.14 在构造函数中开辟内存空间

   8.15 对象在栈和堆中的不同

   8.16 this指针

   8.17 指针的常见错误

   8.18 指针的运算

   8.19 常量指针

   8.20 对指针的认知

   与LSGO一起学“C++上机小练习11”

第9章 引用

   9.1 什么是引用

   9.2 引用的地址

   9.3 引用就是别名常量

   9.4 引用对象

   9.5 空引用

   9.6 按值传递

   9.7 按指针(地址)传递

   9.8 按别名传递

   9.9 让函数返回多个值

   9.10 用值来传递对象

   9.11 用指针来传递对象

   9.12 用const指针来传递对象

   9.13 用引用来传递对象

   9.14 到底是使用引用还是使用指针

   9.15 引用和指针可以一块用

   9.16 引用容易犯的错误

   9.17 引用一个按值返回的堆对象

   9.18 引用一个按别名返回的堆对象

   9.19 在哪里创建就在哪里释放

第10章 深入函数

第11章 运算符重载

第12章 继承

第13章 虚函数

第14章 数组

   14.1 什么是数组

   14.2 数组元素

   14.3 数组下标越界

   14.4 倒序输出

   14.5 将数组的下标定义为常量以便于修改

   14.6 手动操作数组元素

   14.7 数组的初始化

   14.8 求平均考试成绩

   14.9 兔子繁殖问题

   14.10 数字排序问题

   14.11 数组在内存中的分布

   14.12 数组名

   14.13 数组名与函数

   14.14 传递与接收

   14.15 将数组传递给函数

   14.16 求数组所有元素的和

   14.17 用递增法查找数据

   14.18 用二分法查找数据

   14.19 判断数组是否按照顺序排列

   14.20 判断数组排列方式然后执行不同的函数

第15章 链表

第16章 多态

第17章 类的特殊成员

第18章 字符串

第19章 代码重用

第20章 友元类与嵌套类

第21章 流

第22章 命名空间

第23章 模板

第24章 异常和错误处理

第25章 补充内容

   25.6 位运算

C++学习补充资料

   C++中inline函数

   C++中类的inline成员函数

   C++中混合运算的类型转换

   C++上机小练习01参考代码

   C++上机小练习02参考代码

   C++上机小练习03参考代码

   C++上机小练习04参考代码

   C++上机小练习05参考代码

   C++上机小练习06参考代码

   C++上机小练习07参考代码

   C++上机小练习08参考代码

   C++上机小练习09参考代码

   C++上机小练习10参考代码

   C++上机小练习11参考代码


华北电力大学LSGO软件技术团队成立于2010年09月25日,团队主要以机器学习地理信息系统为主要研究方向,成立几年来为学校培养了大量优秀人才,他们或者就职于IBM、阿里巴巴、网易游戏、百度等IT企业,或者就读于中科院信安所、中科院计算所、中科院自动化所、中国科技大学、北京理工大学、武汉大学、华南理工大学、哈尔滨工业大学、华北电力大学等著名高校。

今年(2016年07月)毕业的李文乔同学保送到北京理工大学,安晟同学继续在华北电力大学读研究生,期间华硕公司,小米公司也希望团队推荐学生就业,综上,来LSGO软件技术团队学习可作为驻保高校学生,打发课余时间的一个不错选择。

如果对我们感兴趣,可以与我联系,通过考核后即可成为我们的一员。

请阅读以下代码(C#),得到联系方式:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
5分钟搞懂C 函数指针与函数类型
C++程序设计 试题及答案(三)
200-285
剑指offer之调整数组顺序使奇数位于偶数前面
231 f0708
C++内存管理详解(3)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服