C++数组引用
C++数组引用
一、数组引用
C++数组的引用:
引用即别名
这样比指针传地址方便多了
形参中的(&a)[10]可以就看做a数组的别名,肯定要指定数组大小,如果没有后面的数组大小,天知道是变量还是数组
普通传值和引用传值对比:
数组普通传值:a-->a[10] (或a[])
数组引用传值:a-->(&a)[10]
变量普通传值:a-->a
变量引用传值:a-->(&a)
类比一下,很好理解
二、代码实例
/*
C++数组的引用:
引用即别名
这样比传地址方便多了
形参中的(&a)[10]可以就看做a数组的别名,肯定要指定数组大小,如果没有后面的数组大小,天知道是变量还是数组
普通传值和引用传值对比:
数组普通传值:a-->a[10] (或a[])
数组引用传值:a-->(&a)[10]
变量普通传值:a-->a
变量引用传值:a-->(&a)
类比一下,很好理解 测试结果:
0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9
*/ #include <iostream>
using namespace std;
void test(int a[]);// 数组普通传值,用于打印数组a的值
void readData(int (&a)[]); //数组引用传值:将a数组赋值为0--9
void printData(int (&a)[]); //数组引用传值:用于打印数组a的值
void test(int a[]){// 数组普通传值,用于打印数组a的值
for(int i=;i<;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
void readData(int (&a)[]){//数组引用传值:将a数组赋值为0--9
for(int i=;i<;i++)
{
a[i]=i;
}
}
void printData(int (&a)[]){//数组引用传值:用于打印数组a的值
for(int i=;i<;i++)
{
printf("%d ",a[i]);
}
}
int main(){
int a[]={}; //为a数组中的每一个赋初值为0
test(a); // 数组普通传值,用于打印数组a的值
readData(a);//数组引用传值:将a数组赋值为0--9
printData(a);//数组引用传值:用于打印数组a的值 return ;
}
三、测试结果
测试结果:
0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9

C++数组引用的更多相关文章
- [转]数组引用:C++ 数组做参数 深入分析
"数组引用"以避免"数组降阶"(本文曾贴于VCKBASE\C++论坛) 受[hpho]的一段模板函数的启发,特写此文,如有雷同,实在遗憾. 数组降阶是个讨厌的事 ...
- [C++]数组指针,数组引用,函数指针
数组指针是指一个指向数组的指针,例如有一个数组指针p指向一个数组a[],则 *p是取到这个数组,也就是说 *p=a,因此 **p =a[0], 它的定义为: ]; ]=&a; (*c)表示它是 ...
- java 数组声明定义 数组内存分配 数组初始化 数组引用 数组的遍历
一,数组的定义 Java 中定义数组的语法有两种: 1. type arrayName[]; 2. type[] arrayName;type 为Java中的任意数据类型,包括基本类型和组合类型,ar ...
- 引用、数组引用与指针引用、内联函数inline、四种类型转换运算符
一.引用 (1).引用是给一个变量起别名 定义引用的一般格式:类型 &引用名 = 变量名: 例如:int a=1; int &b=a;// b是a的别名,因此a和b是同一个单元 ...
- Java8 方法引用与构造器引用,数组引用
package java_8; import org.junit.Test; import java.io.PrintStream; import java.util.Comparator; impo ...
- java 基本语法(十七)Lambda (四)构造器引用与数组引用
1.构造器引用格式:类名::new 2.构造器引用使用要求:和方法引用类似,函数式接口的抽象方法的形参列表和构造器的形参列表一致.抽象方法的返回值类型即为构造器所属的类的类型 3.构造器引用举例: / ...
- Lambda 方法引用 构造器引用 数组引用
一.方法引用 注意: 1.Lambda 体中调用方法的参数列表与返回值类型,要与函数式接口中的抽象方法的函数列表和返回值保持一致!2.若Lambda 参数列表中的第一个参数是实例方法的调用者,而第二个 ...
- C++语法 初始化列表 数组引用
只能在初始化列表initilizationlist中初始化的有: 1.const修饰的数据成员或者reference参考 2.基类的构造函数 注意,数组不能引用,亦即以下代码是不对的 void fun ...
- js 数组引用 发现的问题
最近做项目时,要对返回的数据[保存在json数组中]做一次修改,但原数据要保留一次做备用.首先想到,原数据不动,用一个临时的变量来修改,大致模型就是这样: // 原始: a=[1,2,3,4,5,.. ...
随机推荐
- Object-C-Foundation-set
无序集合 哈希表 NSSet *colors=[NSSet setWithObjects:@@"yellow",@"red",@"blue" ...
- 20154312 曾林 Exp8 web基础
1.基础问题回答 1.1.什么是表单 1.2.浏览器可以解析运行什么语言 1.3.WebServer支持哪些动态语言 2.实践总结与体会 3.实践过程记录 ----3.1.Web前端:HTML基础 - ...
- [Data Access] ORM 原理 (11): 效能議題
這絕對是 ORM 的使用者,開發人員與 DBAs 共同想要問的議題,到底我使用了 ORM 和使用傳統的 ADO.NET 下 SQL 指令的方式會差多少? 這個問題不但會發生在 Entity Frame ...
- Python实现在给定整数序列中找到和为100的所有数字组合
摘要: 使用Python在给定整数序列中找到和为100的所有数字组合.可以学习贪婪算法及递归技巧. 难度: 初级 问题 给定一个整数序列,要求将这些整数的和尽可能拼成 100. 比如 [17, 1 ...
- Java设计模式应用——责任链模式
生产一个产品,需要依次执行多个步骤,才能完成,那么是使用责任链模式则是极好的. 在性能告警模块开发过程中,创建一条告警规则需要执行阈值解析,中间表生成,流任务生成,规则入库,告警事件入库等诸多操作.如 ...
- Js基础知识3-字符串、正则表达式全解
字符串的生成转换 你可以将任何类型的数据都转换为字符串,你可以用下面三种方法的任何一种: var myStr = num.toString(); // "19" var myStr ...
- 我是怎么样和Linux结缘并通过红帽RHCE认证的
我高考完当时就是选择的计算机科学与技术专业,上大学以后联想到的和计算机相关的就只有写代码,开发,网站,网页设计,就没有其他的了,当时学习写代码也都是在Windows上,什么C#.C++之类的?大约在大 ...
- MySQL 字符串拼接
MySQL 字符串拼接 在Mysql 数据库中存在两种字符串连接操作.具体操作如下 1. CONCAT(string1,string2,…) 说明 : string1,string2代表字符串,c ...
- 20145332 《网络攻防》 逆向与Bof实验
20145332 <网络攻防>逆向与Bof实验 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用 ...
- java_test_week4
20165310 week4 JDK知识点 启动JDK: javac -g <java>:参数一定要加上-g jdk -classpath .:./bin <class>:一开 ...