日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

复杂引用

發布時間:2024/9/27 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 复杂引用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


1.通過引用來引用數組(一維數組)

#include <iostream>

#include <stdlib.h>

?

/*引用就是給原來的變量有一個別名同一個地址*/

void main()

{

??? int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

??? int(&ra)[10](a);

??? int i = 0;

??? for (auto data:ra)? //C++11的循環

??? {

??????? data = i + 5;

??????? std::cout << data << std::endl;

??? }

??? std::cout << a << " " << ra << std::endl;

??? std::cout << &a << " " << &ra << std::endl;

?

??? system("pause");

}

2.引用二維數組的方式

#include <iostream>

#include <stdlib.h>

?

void main()

{

??? int a[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

??? //引用就是給原來的變量有一個別名同一個地址

??? int(&ra)[2][5](a);

??? for (int i = 0; i < 2;i++)

??? {

??????? for (int j = 0; j < 5;j++)

??????? {

??????????? std::cout << " " << ra[i][j];

??????? }

??????? std::cout << "\n";

??? }

?

??? std::cout << a << " " << ra << std::endl;

??? std::cout << &a << " " << &ra << std::endl;

?

??? system("pause");

}

?

3.引用函數指針

#include <iostream>

#include <stdlib.h>

?

int jia(int a, int b)

{

??? return a + b;

}

?

int jian(int a, int b)

{

??? return a - b;

}

?

//函數指針int (*rp)(int a,int b)

void change(int(* & rp)(int, int))

{

??? rp = jian;

}

?

int(*& changep(int(*&rp)(int, int)))(int, int)

{

??? rp = jian;

??? return rp;

}

?

void main()

{

??? int(*p)(int a, int b)(jia);

??? std::cout << p(1, 2) << std::endl;

??? change(p);

??? std::cout << p(1, 2) << std::endl;

?

??? std::cout << "-----------------------" << std::endl;

??? p = changep(p);

??? std::cout << p(1, 2) << std::endl;

?

??? system("pause");

}

4.數組中的元素不能為引用

5.引用的本質是指針,直接sizeof引用,就是引用的數據大小,引用變量占據4個字節

#include <iostream>

?

class MyClass{

??? char & a;

??? char & b;

??? char & c;//引用的本質是指針,直接sizeof引用,就是求引用的數據大小

??? //引用變量占據4個字節

};

?

void main()

{

??? int num = 10;

??? int & rnum(num);

??? double db = 10.9;

??? double & rdb(db);? //直接作用引用的變量

?

??? std::cout << sizeof(rnum) << std::endl;

??? std::cout << sizeof(rdb) << std::endl;

??? std::cout << sizeof(MyClass) << std::endl;

??? system("pause");

}

運行結果如下:

?

?

?

#include <iostream>

?

int? getdata(int && num)//右值引用,節約內存拷貝,內存優化所必須

{

??? std::cout << num << std::endl;

??? num += 10;

??? return num;

}

?

void? main7()

{

??? int a = 5;

??? int b = 4;

?

??? std::cout << getdata(a + 1) << std::endl;

??? system("pause");

}

?

//左值,一般可以取地址就是左值

//右值某些情況可以,某些情況不可以

void main8()

{

??? int a = 3;

??? int b = a + 1;//右值->左值

??? std::cout << getdata(std::move(a)) << std::endl;

??? //std::move將左值轉換為右值,C++11

}

void main9()

{

??? //const int num(6);

??? char str[10]("hello");//限定字符串不被修改

??? const char *pc(str);//指向常量的指針限定了指向的數據無法修改,+1+2+3

??? str[3] = 'x';//可以,

??? //pc[3] = 'y';

??? //*(pc + 3) = 'y';

??? pc = "world";

??? system("pause");

}

?

void main10()

{

??? char str[10]("hello");

??? const char(&rstr)[10](str);//常量引用

??? const char(&rrstr)[10](rstr);//引用可以給另一個引用初始化

??? str[4] = 'X';

??? //rstr[4] = 'Y';

}

?

void? main11()

{

??? int(*p)(int a, int b)(jia);

??? std::cout << p(1, 2) << std::endl;

??? int(*const &rp)(int a, int b)(p);//引用函數指針

??? //rp=jian;//()僅僅適用于初始化

}

總結

以上是生活随笔為你收集整理的复杂引用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。