C++数组引用

C++数组引用

一、数组引用

C++数组的引用:
引用即别名
这样比指针传地址方便多了
形参中的(&a)[10]可以就看做a数组的别名,肯定要指定数组大小,如果没有后面的数组大小,天知道是变量还是数组
普通传值和引用传值对比:
数组普通传值:a-->a[10]      (或a[])
数组引用传值:a-->(&a)[10]
变量普通传值:a-->a
变量引用传值:a-->(&a)
类比一下,很好理解

二、代码实例

 1 /*
 2 C++数组的引用:
 3 引用即别名
 4 这样比传地址方便多了
 5 形参中的(&a)[10]可以就看做a数组的别名,肯定要指定数组大小,如果没有后面的数组大小,天知道是变量还是数组
 6 普通传值和引用传值对比:
 7 数组普通传值:a-->a[10]    (或a[])
 8 数组引用传值:a-->(&a)[10]
 9 变量普通传值:a-->a
10 变量引用传值:a-->(&a)
11 类比一下,很好理解
12
13 测试结果:
14 0 0 0 0 0 0 0 0 0 0
15 0 1 2 3 4 5 6 7 8 9
16 */
17
18 #include <iostream>
19 using namespace std;
20 void test(int a[10]);// 数组普通传值,用于打印数组a的值
21 void readData(int (&a)[10]); //数组引用传值:将a数组赋值为0--9
22 void printData(int (&a)[10]); //数组引用传值:用于打印数组a的值
23 void test(int a[10]){// 数组普通传值,用于打印数组a的值
24     for(int i=0;i<10;i++)
25     {
26         printf("%d ",a[i]);
27     }
28     printf("\n");
29 }
30 void readData(int (&a)[10]){//数组引用传值:将a数组赋值为0--9
31     for(int i=0;i<10;i++)
32     {
33         a[i]=i;
34     }
35 }
36 void printData(int (&a)[10]){//数组引用传值:用于打印数组a的值
37     for(int i=0;i<10;i++)
38     {
39         printf("%d ",a[i]);
40     }
41 }
42 int main(){
43     int a[10]={0}; //为a数组中的每一个赋初值为0
44     test(a); // 数组普通传值,用于打印数组a的值
45     readData(a);//数组引用传值:将a数组赋值为0--9
46     printData(a);//数组引用传值:用于打印数组a的值
47
48     return 0;
49 }

三、测试结果

测试结果:
0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9

时间: 2024-11-07 12:33:09

C++数组引用的相关文章

返回数组引用的4种函数写法

#include <iostream> #include <string> using namespace std; //传入的参数是数组的引用,返回值也是数组的引用 string (&fun(string (&s)[10]))[10] { return s; } //using str_arr = string (&)[10];/*typedef string str_arr[10];str_arr &fun1(str_arr &s){ r

数组引用形参

//数组引用形参 void print(int(&arr)[10]){ for (auto elem : arr){ std::cout << elem << ", "; } // for (int i = 0; i < 10;i++){ // cout << arr[i] << endl; // } } //void print(int arr[]){ // for (int i = 0; i < 10; i++){

[C++]数组指针,数组引用,函数指针

数组指针是指一个指向数组的指针,例如有一个数组指针p指向一个数组a[],则 *p是取到这个数组,也就是说 *p=a,因此 **p =a[0], 它的定义为: int a[10]; int (*c)[10]=&a; (*c)表示它是一个指针,若不加括号则变成 指针数组 ,[10]表示指向一个长度为10的数组,int 表示数组元素为int 因为函数不能返回数组,所以可以设置返回一个数组指针,即 auto fo2(int (&a)[10]) -> int (*)[10]{ a[5]=10;

数组引用vs引用数组

下面介绍了数组引用 数组可以有引用,但是数组元素不能是引用 定义方法可以参考数组指针和指针数组 http://www.cnblogs.com/yqskj/articles/2207168.html

[转]数组引用:C++ 数组做参数 深入分析

"数组引用"以避免"数组降阶"(本文曾贴于VCKBASE\C++论坛) 受[hpho]的一段模板函数的启发,特写此文,如有雷同,实在遗憾. 数组降阶是个讨厌的事,这在C语言中是个无法解决的问题,先看一段代码,了解什么是"数组降阶" #include <IOSTREAM> using namespace std; void Test( char array[20] ) {     cout << sizeof(array)

java8新特性——函数式接口,方法,构造器,数组引用

package functional; /* 定义:如果一个接口里面只声明了一个函数,就称为函数式接口 lambda表达式的本质:作为函数式接口的实例,必须依赖一类特别的对象类型——函数式接口 所以用匿名实现类表示的都可以用lambda表达式来写 Java.util.function 下也定义了Java8的函数式接口 函数式接口 内置抽象类 作用 1.Consumer<T>: void accept(T t) 消费型 2.Supplier<T>: T get() 返回一个对应的T对

js 数组引用 发现的问题

最近做项目时,要对返回的数据[保存在json数组中]做一次修改,但原数据要保留一次做备用.首先想到,原数据不动,用一个临时的变量来修改,大致模型就是这样: // 原始: a=[1,2,3,4,5,.........]; // 临时: var b = a ; // 操作: b[b.length] = 1 ; 本来觉得是一个很简单的问题.但测试时候发现,并没得到想要的结果.测了很久才找到问题:a数据居然也跟着b的操作一起发生了改变,怎么都想不通.问了同事,貌似他没遇到过,也搞不清楚怎么回事.只好求助

39 数组引用

1 class Demo3_Array{ 2 public static void main(String[] args) { 3 int[] arr1 = new int[3]; 4 int[] arr2 = new int[3]; 5 6 System.out.println(arr1); // 两个不同的地址 7 System.out.println(arr2); 8 9 arr1[0] = 10; 10 arr2[1] = 20; 11 12 System.out.println(arr

数组引用赋值

1 package com.java7; 2 3 class AssignARef { 4 public static void main(String[] args) { 5 int i; 6 7 int nums1[] = new int[10]; 8 int nums2[] = new int[10]; 9 10 for(i = 0; i < 10; i++) 11 nums1[i] = i; 12 13 for(i = 0; i < 10; i++) 14 nums2[i] = i;