精华内容
下载资源
问答
  • C++引用数组形参
    2021-10-25 16:16:58

    当引用一个数组作为形参时:

    #include <iostream>
    
    void a(unsigned char (&tmp)[200])
    {
        printf("%x\r\n",tmp);
        sprintf((char *)&tmp,"aaaaaa");
    }
    
    int main(int argc, char **argv)
    {
        unsigned char tmp[200] = {0};
        printf("%x\r\n",tmp);
        a(tmp);
        printf("%s",tmp);
        return 0;
    }

    输出结果:

    61fd40
    61fd40
    aaaaaa

    形参不想指定数组大小该如何编写?

    #include <iostream>
    template<unsigned N>
    void a(unsigned char (&tmp)[N])
    {
        printf("%x\r\n",tmp);
        sprintf((char *)&tmp,"aaaaaa");
    }
    
    int main(int argc, char **argv)
    {
        unsigned char tmp[200] = {0};
        printf("%x\r\n",tmp);
        a(tmp);
        printf("%s",tmp);
        return 0;
    }

    输出结果:

    61fd40
    61fd40
    aaaaaa

    详细内容可以搜索:非类型模板参数

    更多相关内容
  • C++引用数组

    千次阅读 2017-11-16 16:49:47
    有些书上说,不能建立数组引用,鄙人不敢苟同。int a= 10; int *p = &a; int &b = a;我发现引用的建立就是把int * p = & a中&和*互相调换,那么数组中是否也可以呢#include using namespace std;int main() { int...

    有些书上说,不能建立数组的引用,鄙人不敢苟同。

    int a= 10;
    int *p = &a;
    int &b = a;

    我发现引用的建立就是把int * p = & a中&和*互相调换,那么数组中是否也可以呢

    #include<iostream>
    using namespace std;
    
    int main()
    {
        int arr[3]={1,2,3};
        //int (*p)[3] = &arr;
        int (&p)[3] = arr;//一维数组
        cout<<p[0]<<endl;
        cout<<p[1]<<endl;
        cout<<p[2]<<endl;
        cout<<"######################"<<endl;
    
    
        int brr[2][3] = {1,2,3,4,5,6};
        //int ((*s)[2])[3]  = &brr;
        int ((&s)[2])[3] = brr;//二维数组
        cout<<s[0][0]<<endl;
        cout<<s[0][1]<<endl;
        cout<<s[0][2]<<endl;
        cout<<s[1][0]<<endl;
        cout<<s[1][1]<<endl;
        cout<<s[1][2]<<endl;
        return  0;
    }
    
    

    以上代码,运行正常,所以,我认为,能建立引用数组,请多多指教

    展开全文
  • 一、大概区别 就像指针的数组和数组的指针一样耐人寻味 ...//array首先和&结合,所以array是引用引用的对象是数组 //应该叫作数组引用 int (&array)[10] 二、引用数组 首先,可以明确的说明,

    一、大概区别

    就像指针的数组和数组的指针一样耐人寻味

    //array首先向右结合,所以这个相当于 (int&)array[] array是个数组,其中的元素是引用
    
    //应该叫:引用的数组
    
    int &array[]
    
    //array首先和&结合,所以array是引用,引用的对象是数组
    
    //应该叫作数组的引用
    
    int (&array)[10] 

    二、引用的数组

    首先,可以明确的说明,引用的数组是不能当函数的参数的。再者要说明,这种方式是非法的

    原因:从引用的本质说吧

    首先,引用必须被初始化,这没得说,而数组并不能被另一个数组初始化或被另一个数组赋值这是其一,并且其中的每一个引用,你没有办法给他一下子初始化。

    再次,引用它不支持传统意义的复制,它不占用新的空间

    再再次,他没有意义,它可以用指针数组实现,完全可以代替

    int i,j;
    
    int *a[5] = {&i, &j};
    
    a[0]; // point to i
    
    a[1]; // point to j

    再再再次,不好实现,因为编译器不知道应该分多大的内存给引用的数组。

    三、数组的引用

    如果不好理解,可以这样理解(从网上看到的)

    int n3[3] = {2, 4, 6};
    
    int (&rn3)[3] = n3;     //数组的引用

    typedef一下

    int n3[3] = {2, 4, 6};
    
    typedef int Int3[3];
    
    Int3& rn3 = n3; 

    四、数组的引用的应用

    1、如上所说,可以当函数参数,并且可以传递维数过去。

    2、维度的大小可以用一个模板的方式直接表示,这样更清楚明确

    template<size_t SIZE> void fun(int (&arr)[SIZE] );

    code:

      1: // --------------------------------------------------------------------------
    
      2: // 说明:数组引用学习
    
      3: // 环境:vs2008
    
      4: // 创建:熊哥 (http://pppboy.blog.163.com)
      5: // 时间:2013.9.13
    
      6: // --------------------------------------------------------------------------
    
      7: 
    
      8: //固定大小,很难受
    
      9: void ArrRef(int (&arr)[5])
    
     10: {	
    
     11: 	for (int i = 0; i < 5; ++i)
    
     12: 	{
    
     13: 		cout << arr[i] << " ";
    
     14: 	}
    
     15: 	cout << "\n";
    
     16: }
    
     17: 
    
     18: //使用模板通用化一些,对数组通用
    
     19: template<size_t SIZE>
    
     20: void ArrRefTemplete(int (&arr)[SIZE])
    
     21: {	
    
     22: 	for (int i = 0; i < SIZE; ++i)
    
     23: 	{
    
     24: 		cout << arr[i] << " ";
    
     25: 	}
    
     26: 	cout << "\n";
    
     27: }
    
     28: 
    
     29: int main(int argc, char* argv[])
    
     30: {
    
     31: 	const int MAX_INDEX(5);
    
     32: 	int aIndex[MAX_INDEX] = {1,3,4,5,6};
    
     33: 
    
     34: 	//如果改了数组大小MAX_INDEX的值,两个大小对不上就会有问题
    
     35: 	ArrRef(aIndex);
    
     36: 
    
     37: 	//如果改了数组大小MAX_INDEX的值,也无所谓
    
     38: 	ArrRefTemplete(aIndex);
    
     39: 
    
     40: 	system("pause");
    
     41: 	return 0;
    
     42: }

    out:

    1 3 4 5 6
    
    1 3 4 5 6
    
    请按任意键继续. . .

    end

    展开全文
  • 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++:引用数组引用

    千次阅读 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 &...
  • C++数组引用引用数组

    万次阅读 多人点赞 2018-10-30 15:53:27
    转载:关于数组引用引用数组 一、大概区别 就像指针的数组和数组的指针一样耐人寻味 //array首先向右结合,所以这个相当于 (int&amp;)array[] array是个数组,其中的元素是引用 //应该叫:引用数组 ...
  • c++数组引用

    2019-04-04 17:41:31
    引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名; 引用最大的好处就是提高函数效率以及节省空间; 关键问题一、传递引用与传...
  • const类型 和 非 const类型,常引用 和 非const引用可以构成函数重载指针形参的const和非const也能构成重载,跟const 引用一样普通的形参变量 const和 非const 无法构成重载引用数组的2种格式: const 引用,又叫常引用,...
  • C++引用的方式传递数组实例

    千次阅读 2021-01-19 11:29:20
    #include<iostream> using namespace std; void print(int(&p)[4]) ...这里需要注意引用传递数组需要将&p括起来,然后加上数组元素个数,必须得写清楚个数,这个个数等于传入的数组的大小
  • C++ 数组引用

    千次阅读 2016-11-03 14:40:36
    c++数组数组引用引用引用传参
  • C++多维数组

    2021-12-26 14:04:47
    严格来说,C++语言中没有多维数组,通常所说的多维数组其实是数组数组。谨记这一点,对今后理解和使用多维数组大有益处。当一个数组的元素仍然是数组时,通常使用两个维度来定义它:一个维度表示数组本身大小,...
  • 关于C++中的数组引用

    千次阅读 2018-08-31 18:26:29
    #include &lt;iostream&gt; void func(int (&amp;a)[7]) { ...... ...... } int main() { int a[] = {1,2,3,4,5,6,7};...数组引用,有点像数组指针------int (*a)[7],这里的a就是指向一...
  • c++ 数组引用

    千次阅读 2019-12-07 09:55:35
    一维数组合、二维数组引用的方式类似,直接看代码就好。 #include<iostream> using namespace std; int main() { //一维数组 int m[4] = { 1, 2, 3, 4 }; int(&a)[4](m); for (int i = 0; i<4; i+...
  • C++数组引用

    2017-06-02 16:03:00
    C++数组引用 一、数组引用 C++数组引用引用即别名这样比指针传地址方便多了 形参中的(&amp;a)[10]可以就看做a数组的别名,肯定要指定数组大小,如果没有后面的数组大小,天知道是变量还是数组 普通传值和...
  • C++ 动态数组

    千次阅读 2022-01-21 14:08:03
    C++语言和标准库提供了两种一次分配一个对象数组的方法。C++语言定义了另一种new表达式语法,可以分配并初始化一个对象数组。标准库中包含一个名为allocator的类,允许我们将分配和初始化分离。使用allocator通常会...
  • C++ 二维数组参数传递的实现方法 int a[2][2]={ {4, 6}, {9, 11} }; 我定义了这样一个数组,我想把这个数组作为参数,传递到一个函数中,并要在函数中能引用该二维数组的元素,我该怎么做?  第一种方式是直接传递...
  • 今天小编就为大家分享一篇python调用c++ ctype list传数组或者返回数组的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • C++数组作为函数参数的使用说明

    千次阅读 2020-03-02 21:47:21
    我们一般使用函数时,函数参数大多数都是int,couble,char之类的类型,我们接下来可以看看当函数里需要用到数组时,c++是如何实现的。下面给出的例子是c++primer的例子,在此这里简化了下。 #include <...
  • C++数组指针及引用

    2020-02-28 12:42:19
    最近写代码,对于数组指针及引用的这部分内容有点忘了。 &和*的区别 &:与变量(如a)在一起为取地址,与变量类型(如int)结合为引用。取地址就是指针,引用就是变量别名,使用同一空间。 *:与变量在一起...
  • C++ 数组作为参数的引用传递形参实参合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个...
  • C++关于数组引用做函数形参

    千次阅读 2020-01-02 10:52:57
    # include using namespace std ; void func ( int ( & a ) [ 5 ] ) { ...数组引用做函数形参时,必须给形参指定长度,其写法如上。 为什么?考完试再去找一下学习资料。
  • 资源代码演示的是c#代码调用c++ DLL 的方式。该演示为原创,绝非搬砖。解决了c# 调用 C++ Dll获取相关信息之如何传递结构体数组引用以及如何处理获取到的结构体数组数据的问题。
  • c++传递数组给函数的三种方法: c++中您可以通过指定不带索引的数组名来传递一个指向数组的指针。传递数组给函数,数组类型会自动转化为指针类型,因而传的实际是地址。 方式1: 形式参数是一个指针 void myFunction...
  • 指针和const 禁止改写指针(常量指针或常指针) ...禁止改写间接引用 int x=5; const int *pInt=&x; pInt中存放的地址可以变,但x的值不可变。 既禁止改写指针,又禁止改写间接引用 int x=5; const int *...
  • C++ 返回数组引用

    千次阅读 2017-02-27 15:25:32
    //返回值是数组名的声明方法 #include using namespace std; int arrone[] = { 1,2,3,4,5 }; int arrtwo[] = { 6,7,8,9,10 }; //利用传统方法定义类型别名 typedef int iarr1[5]; //利用C++11定义类型别名 ...
  • C++数组引用传递

    千次阅读 2019-09-04 17:51:23
    引用传递似乎有两种方式,一种指定长度的方式,一种模板类的方式 void pp(int(&ch)[8]){ //int len = strlen(ch); cout << sizeof(ch)/sizeof(ch[0]); } template<class T> int length(T&...
  • C++中不允许定义引用数组

    千次阅读 2020-12-17 09:06:10
    首先,什么叫引用数组?顾名思义,就是一个数组,...C++中引用没有引用数组 可以改成这样 int (&b)[3] = p; // b本身是一个引用,b不是数组。 这样就可以使用 int (&b)[3]=p; int (&b)[3]; int *p=(&b
  • C++的一般引用及其数组引用

    千次阅读 2014-06-12 10:10:41
    引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名; 【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名 ...
  • C++数组&指针&引用&空类(空对象)

    千次阅读 2020-02-08 18:38:54
    数组是指长度为0的数组(int[]或int[0])。 int[]仅可用在类或结构体中。 空数组不占空间。 空数组无需初始化,数组名直接就是所在的偏移。 举个例子: /// @author zhaolu struct Data { int i; int ptr[]; }; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 221,701
精华内容 88,680
关键字:

c++ 引用数组

c++ 订阅