现在的位置: 首页 > 综合 > 正文

引用变量和引用数组

2017年12月11日 ⁄ 综合 ⁄ 共 938字 ⁄ 字号 评论关闭

前两天没事干,重拾C++的一些书籍,翻到引用这,无意写了些DD:

其实引用和指针有很多相似的地方,又有不同的(太多了,不过说到效率上,比如函数传参数,我们可以用引用,指针,哪种好呢,引用不必为站再分配空间了,而指针还学要分配4字节的空间给指针变量)

我们知道如何引用一个变量,比如:

int a = 10;

int &b= a;  //OK

那么如何引用一个数组呢:

我们想想指针是如何实现的呢

int a[10]={0};

int  (*p)[10]=a;//p是一个指针,指向的是有十个整形元素的数组    ,int* p[10]则表示的是p是一个数组,他的每个元素都是整形指针类型的变量

OK ,于是我们想到了会不会这样引用数组的呢,试试看吧:

int (&b)[10]=a;

cout<<b[1]<<endl;

那么多位数组呢,我们是不是可以类推一下呢:

int  main()
{
    //fun();
    int a[5][5]={1,2,3,4,5,6,7,8,9,0};
    int (&b)[5][5]=a;
    printf("%d",b[0][0]);
    return 0;
}
                                        

(gdb) start
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Breakpoint 3 at 0x4005c7: file test.cpp, line 29.
Starting program: /home/gaoke/code/mytest/t
main () at test.cpp:29
29  int a[5][5]={1,2,3,4,5,6,7,8,9,0};
(gdb) n
30  int (&b)[5][5]=a;
(gdb) p &a
$6 = (int (*)[5][5]) 0x7fff4dea17d0
(gdb) n
31  printf("%d",b[0][0]);
(gdb) p b
$7 = (int (&)[5][5]) @0x7fff4dea17d0: {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}}
(gdb)

抱歉!评论已关闭.