精华内容
下载资源
问答
  • c++函数调用数组
    千次阅读
    2021-03-31 14:10:16
    int fun(int a[3][2])
    {
    }
    int main()
    {
    fun(a);
    }
    
    更多相关内容
  • 我们知道,当我们将数组作为参数传递为一个函数后,数组会退化为指针。这样就导致我们无法正确在函数中计算数组的大小。 #include<iostream> using namespace std; int func(int* arr) { return sizeof(arr);...

    1.问题

    我们知道,当我们将数组作为参数传递为一个函数后,数组会退化为指针。这样就导致我们无法正确在函数中计算数组的大小。

    #include<iostream>
    using namespace std;
    int func(int* arr)
    {
    	return sizeof(arr);
    }
    
    int main()
    {
    	int Arr[] = { 2,4,3,1,73,0 };
    	cout << func(Arr) << endl;
    	system("pause");
    	return 0;
    }
    

    输出的结果是 4 ,因为这里计算的是一个指针的大小。

    解决这个问题的方法通过控制函数中形参的数据类型,使得数组使用引用的方法传递给函数的形参。

    原理

    编译器是允许数组使用引用的方法传递给函数形参的。
    提供的底层语法就是:

    数据类型(&新数组名)[数组的大小] = 原数组名;
    

    例如:

    int Arr[] = { 2,4,3,1,73,0 };
    int(&arr)[6] = Arr;
    

    因此我们可以根据此原理来用不同方法解决这个问题。

    方法1——用基本语法

    我们将数据类型(&新数组名)[数组的大小]作为函数形参即可

    #include<iostream>
    using namespace std;
    int func(int(&arr)[6])
    {
    	return sizeof(arr);
    }
    
    int main()
    {
    	int Arr[] = { 2,4,3,1,73,0 };
    	cout << func(Arr) << endl;
    	system("pause");
    	return 0;
    }
    

    输出的结果是 24
    这种方法好处在使为程序更加安全,因为传入的数据如果不是我们想要的大小,就会禁止传入,从而报错。
    坏处更加明显了,我们需要提前知道所使用数组的大小,并且对于不同的数组,需要有不同的函数实现,使得重复代码增加很多。

    方法2——用函数模板

    因为函数模板可以自动推断出传入函数参数的数据类型,所以我们可以通过使用函数模板更加便捷地解决这个问题。

    #include<iostream>
    using namespace std;
    template<class T>
    int func(T& arr)
    {
    	return sizeof(arr);
    }
    
    int main()
    {
    	int Arr[] = { 2,4,3,1,73,0 };
    	cout << func(Arr) << endl;
    	system("pause");
    	return 0;
    }
    

    输出的结果是 24
    这样就成功解决了我们的问题,并且无论传入的数据是字符数组或者整型数组或者浮点型数组,都可以自动实现传入数组的引用。

    后话

    因为auto也可以自动推断数据类型,所以也是一种解决问题的方法,但是因为auto不能用在函数的参数列表中,所以如果不作为函数参数传递时,使用auto也是一种很好的方法。
    语法:

    int Arr[] = { 2,4,3,1,73,0 };
    auto& arr = Arr;
    
    #include<iostream>
    using namespace std;
    int main()
    {
    	int Arr[] = { 2,4,3,1,73,0 };
    	auto& arr = Arr;
    	cout << sizeof(arr) << endl;
    	system("pause");
    	return 0;
    }
    

    输出的结果也是 24

    展开全文
  • 函数引用外部数组元素

    千次阅读 2020-10-29 21:42:51
    通过数组名引用数组 函数声明:void fun(int arr[],int n); 函数调用:int a[10]={3,7,9,11,0,6,7,5,4,2}; fun(a,10); 示例代码 #include <stdio.h> void fun(int arr[], int n) { int i = 0; for(i=0; i...

    通过数组名引用数组

    函数声明:void fun(int arr[],int n);
    函数调用:int a[10]={3,7,9,11,0,6,7,5,4,2};
    		fun(a,10);
    

    示例代码

    #include <stdio.h>
    void fun(int arr[], int n)
    {
            int i = 0;
            for(i=0; i<n; i++)
            {
                    printf("%d ", arr[i]);
            }
            printf("\n");
    }
    int main(int argc, const char** argv)
    {
            int a[5] = {1, 2, 3, 4, 5};
            fun(a, 5);
            return 0;
    }
    

    编译及运行结果
    在这里插入图片描述

    通过指针引用数组

    函数声明:void fun(int arr[],int n);
    函数调用:int a[10]={3,7,9,11,0,6,7,5,4,2};
    		fun(a,10);
    

    示例代码

    #include <stdio.h>
    void fun(int* arr, int n)
    {
            int i = 0;
            for(i=0; i<n; i++)
            {
                    printf("%d ", arr[i]);
            }
            printf("\n");
    }
    int main(int argc, const char** argv)
    {
            int a[5] = {1, 2, 3, 4, 5};
            fun(a, 5);
            return 0;
    }
    

    编译及运行结果
    在这里插入图片描述

    展开全文
  • C++传参之引用数组

    2021-11-02 10:19:42
    原帖见作者的个人博客:C++传参之引用数组 (wanyingjian.cn) 在C++中,有时候我们需要将数组作为参数传递到函数里去,常规的做法是: void fun(int* a) { cout << sizeof(a); //这里会输出4,即a这个指针...

    原帖见作者的个人博客:C++传参之引用数组 (wanyingjian.cn)

    在C++中,有时候我们需要将数组作为参数传递到函数里去,常规的做法是:

    void fun(int* a) {
        cout << sizeof(a); //这里会输出4,即a这个指针的大小
        //接着对数组进行操作
    }

    但是这种做法丢失了一部分信息,有没有更加符合“语法”的写法呢?答案是有的:

    void fun2(int* (&a)[100]) {
        cout << sizeof(a); //这里会输出400,即a数组的大小
        //接着对数组进行操作
    }

    当要想限定传入数组的大小时,可以用上述的写法,其意思为“对数组a的引用”。同时应当注意,这种写法可以安全的使用sizeof()函数,当传入的数组大小不对时,编译器将会报错。

     

    展开全文
  • C++ 用引用的方式向函数传递数组

    千次阅读 2020-08-25 08:09:06
    #include <iostream> using namespace std; int a[10] = { 10,20 }; void GetCharArr(char (&ac)[20]) { sprintf_s(ac, "ABABXX%d", a[0]); } int main() { char str1[20];... system("...
  • 进行数组运算时,先用文本形式表达出数组,再用INDIRECT函数返回由文本字符串指定的引用(即数组)。 紫色框内的函数公式分别为: '=SUM(INDIRECT("B"&$L333&":"&"B"&$M333)) '=SUM...
  • 今天码代码发现数组引用函数形参总是报错, 想着,数组名字不就是数组的首地址,那应该用指针做形参,加上引用的话,就应该的指针引用嘛。 int set_print(int* &t){ 结果凉凉 那逼急了用auto int set_...
  • C++:引用数组引用

    千次阅读 2021-11-26 10:27:09
    C++:引用数组引用) 在C++里,数组引用如下: //第一种方法(常用) //1,定义数组类型 typedef int(my_arr)[5]; typedef int my_arr1[5]; //2,建立引用 my_arr1& arref = arr;//建立引用,相当于int &...
  • //http://pppboy.blog.163.com/blog/static/3020379620138132495934/一、大概区别就...)array[] array是个数组,其中的元素是引用//应该叫:引用数组int &amp;array[]//array首先和&amp;结合,所以array是...
  • 题目:在main函数中定义一个数组并为其赋值,然后自定义一个函数order(),使得main函数中的数组能够在order函数引用并输出。 源代码: #include <stdio.h> #include <string.h> void order(char* str...
  • c函数传递数组

    千次阅读 2019-07-27 09:38:23
    如果您想要在函数中传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。同样地,您也可以传递一个多维数组作为...
  • 函数调用(数组作为参数)

    千次阅读 2019-12-09 20:24:47
    //调用max1函数 return 0 ; } void max1 ( double b [ 10 ] ) //形参 { double max = b [ 0 ] ; int j = 0 , n ; //这里是将b[0]提前拿出来,要不第一个无法比较。 for ( n = 1 ; n 9 ...
  • C++数组引用引用数组

    万次阅读 多人点赞 2018-10-30 15:53:27
    转载:关于数组引用引用数组 一、大概区别 就像指针的数组和数组的指针一样耐人寻味 //array首先向右结合,所以这个相当于 (int&amp;)array[] array是个数组,其中的元素是引用 //应该叫:引用数组 ...
  • 结论:QT信号槽函数形参不支持数组引用 实际代码 //filename:abc.h void sig_add_line(int number, const char (&line)[SIZE]); moc编译后生成的函数 //filename:moc_abc.cpp void RC::sig_add_line(int _t1,...
  • 函数通过数组作为参数 如果想通过一个一维数组作为函数的参数,就必须声明函数形式参数,使用以下三种方式与所有三个声明方法之一产生类似的结果,因为每一种方式告诉编译器,一个整数指针将会要被接收。类似的方式...
  • 我们已经学过C语言很长一段时间了,相信大家对于这个问题还不是特别的陌生,今天我们就来再次的认识这些令我们头痛的函数的一些基本的区别。 函数指针 函数指针:函数指针是指向可执行代码段或调用可执行代码段...
  • 数组作为函数参数调用

    千次阅读 2021-10-15 14:40:41
    数组作为参数在函数中被调用的写法
  • 整理的关于向函数传递数组的几种方法 向函数传递数组,一般遵循的就是传递一个地址,最熟悉的就是通过指针的操作来进行,不过,在练习的过程中,可以慢慢发现有其他许多方法,我们可以根据不同情况或者个人喜好来...
  • 数组引用

    千次阅读 2019-05-29 09:30:06
    引用数组是不能当函数的参数的。 数组作为函数形参传递时,实际上是传递了数组首元素指针的一个副本,因为不能用一个数组初始化另外一个数组,所以数组作为形参时,函数是不知道这个数组的元素个数,只知道数组...
  • C++引用&函数传递数组例子

    万次阅读 2018-04-30 09:56:44
    #include &lt;iostream&gt;using namespace std;/*排序*/void xll(int (&...//排序函数int main(){ int a[5] = {1,8,5,6,3}; xll(a); return 0;}void xll(int (&amp;ac)[5]){ int c; for(int i = ...
  • 调用函数返回数组

    2020-07-19 16:12:51
    调用函数返回数组 1、传递函数 #include<stdio.h> #define maxn 4 void rink(int a[maxn]) { for(int i=0;i<maxn;i++) a[i]=a[i]+1; } int main() { int num[maxn]={4,6,7,8} rink(num); for(int i=0...
  • 函数对于数组的更改操作

    千次阅读 2020-09-01 09:53:48
    int *TestCode(int ...这样在主函数内通过返回值可以对frame数组起到修改的作用 int *TestCode(int frame[]) { for (int i = 0; i < 200; i++) { frame[i] = i; test[i]=frame[i]; } return test; } 这
  • C++函数指针数组的使用方法

    千次阅读 2015-11-24 20:30:49
    什么情况下,想到将函数指针数组来的呢?是由于近期写的一个程序中,有一系列顺序化的函数,且这些函数的形式基本一致,需要对每一步的执行结果进行判断,是否执行成功,若执行成功,则继续执行下一函数,如果执行...
  • 数组参数属于指针参数,指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.如果把数组当作参数, 不管愿意与否, 它就是指针, 指向第一个值的指针.1. 数组参数就是指向第一个元素的...
  • C/C++ | 函数返回数组指针

    千次阅读 2020-03-05 00:01:53
    不过, 函数可以返回数组的指针或引用. 声明一个返回数组指针的函数 Type (*function(parameter_list))[dimension] int (*func(int i))[10]; func(int i) 表示调用 func 函数时需要一个 int 类型的实参. (*func...
  • C++函数数组

    千次阅读 2019-01-25 14:21:03
    在日常编码过程中,我们经常使用到数组,以C++的基本数据类型作为存储对象,而在某些特殊的情况下,我们需要使用到函数数组函数指针(譬如回调函数),其实质为一个指针数组数组内存储着各个函数的指针地址,在...
  • C语言数组作为函数参数

    万次阅读 多人点赞 2019-02-24 20:24:59
    一:数组元素作为函数的实参 数组元素就是变量,与普通变量没有区别,将数组元素传送给形参,实现单向的值传递。 #include &lt;stdio.h&gt; float max(float x,float y){ if(x &gt; y) return x; ...
  • 指针在函数传递数组时的运用

    千次阅读 2019-04-25 16:31:15
    如果希望在函数内部操作数组,必须传递数组指针 此代码表示了数组函数间传递的方法,通过在子函数内修改数组数值,更明显表示了传入的是数组地址 #include <stdio.h> int max(int *intArr, int l)//int...
  • C语言函数如何返回数组

    千次阅读 2021-08-21 16:06:05
    动态内存分配与动态数组2.1 动态内存分配2.2 动态数组2.3 内存与堆与栈二、自定义函数返回数组1.常见错误2.返回数组函数三. 总结四. 参考 提示:以下是本篇文章正文内容,下面案例可供参考 一、静态数组和动态...
  • ②在引用数组元素时指针的运算 ③通过指针引用数组元素 ④用数组名作函数参数 ⑤通过指针引用多维数组 ①数组元素的指针 一个变量有地址,一个数组包含若干元素,每个数组元素都有相应的地址 指针变量可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 641,715
精华内容 256,686
关键字:

函数引用数组