国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C/C++【初級】之一 指針(*)、取地址(&)、解引用(*)與引用(&)的概念

2019-11-08 03:27:52
字體:
來源:轉載
供稿:網友

1.引用注意事項:

1.引用必須被初始化; 2.引用一旦與初始值對象綁定,就不會變化(引用從一而終)!!! 3.引用初始值必須為一個對象,不能使常數 4.引用必須與被引用的對象類型一致

示例1:

/*—————————————————————————————— 示例01:關于 & 引用 ——————————————————————————————*/ int val = 100; int &refval1 = val; // &refval是引用,以i為別名 int &refval2 = refval1; // refval2與refval共同綁定在val上 //int &refval3; // error:引用必須初始化 //int &refval4 = 10 // error :引用的初始值必須為一個對象 //double dval = 3.14; //int &refval5 = dval; // error:引用必須與要引用的對象類型一致,應為int cout << "示例1:/n"; cout << "val: " << val << endl; cout << "refval1 = :" << refval1 << endl; cout << "&refval1 = :" << &refval1 << endl; cout << "refval2 = :" << refval2 << endl; cout << "&refval2 = :" << &refval2 << endl; cout << "/n"; refval2 = 10; // 給引用對象重新賦值 ,相當于給【val = 10】 賦值 cout << "val: " << val << endl; cout << "refval1 = :" << refval1 << endl; cout << "&refval1 = :" << &refval1 << endl; cout << "refval2 = :" << refval2 << endl; cout << "&refval2 = :" << &refval2 <<endl; cout << "/n"; cout << "refval1、refval2 都是引用的val的值,所以他們的地址相同" << endl; cout << "/n"; }

2.定義個簡單的指針

指針注意事項: 1.避免聲明一個指向NULL的指針;

string *ps; // 未初始化的指針 // 合法但危險

示例2:

/*—————————————————————————————— 示例02:關于 指針(*) ——————————————————————————————*/ int val2 = 100; int *ptr2 = &val2; // *ptr定義了一個int型的指針,指向了val所在的內存地址 cout << "示例2:/n"; 3.指針(*)、取地址(&)、解引用(*)與引用(&)的概念

示例3:

/*—————————————————————————————— 示例03:關于 指針(*)、取地址(&)、解引用(*)與引用(&)的概念 ——————————————————————————————*/ int val3 = 100; int &value3 = val3; // 定義一個【引用】 int *ptr3 = &val3; // 定義一個【指針】 int *&refp3 = ptr3; //將一個【指針引用】和一個指針綁定起來,那么refp就是一個【指針引用 】 cout << "示例3:/n"; cout << "val3 的值: " << val3 << endl; cout << "value3 的值: " << value3 << endl; cout << "val3所指向的內存地址 &val3 : " << &val3 << endl; // 【取地址】 cout << "指針ptr3所指向的內存地址 ptr3 : " << ptr3 << endl; // cout << "對*ptr3指向的內容的取地址 &*ptr3: " << &*ptr3 << endl; // 【注意:ptr3 = &val3 = &*ptr3 】 cout << "獲取指針ptr3指向地址的內容 *ptr3 : " << *ptr3 << endl; // 【解引用】 cout << "獲取指針ptr3的地址 &ptr3 : " << &ptr3 << endl; cout << "/n" ; cout << "獲取指針引用refp3 的地址 refp3 : "<< refp3 << endl; // 【指針引用refp】同樣指向 cout << "/n" ; cout << " (&)取地址 和 (*)解引用* 互為反向操作因此,可以推理出,&*&*ptr依舊還是val的地址:/n" << &*&*ptr3 << endl;

重點:作用在引用上的所有操作事實上都是作用在該引用所綁定的對象上。

使用引用有何優點?

  在傳參的時候,使用指針傳參,編譯器需要給指針另行分配存儲單元,存儲一個該指針的副本,在函數中對這個副本進行操作;而使用引用傳參,編譯器就不需要分配存儲空間和保存副本了,函數將直接對實參進行操作。所以使用引用使得程序的運行速度更快,執行效率更高。

C++指針注意事項

C++指針詳解

【C/C++學習】之一、指針和引用的區別

【C/C++學習】之十一、指針一些事

【C/C++學習】之十六、關于空指針NULL、野指針、通用指針


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 安国市| 奉化市| 宣汉县| 连南| 怀集县| 黄陵县| 甘肃省| 绥德县| 扶沟县| 壶关县| 蒲城县| 尖扎县| 乌海市| 安仁县| 四川省| 辛集市| 星子县| 汝南县| 德令哈市| 霞浦县| 白城市| 黔东| 西和县| 望谟县| 凤台县| 甘德县| 稷山县| 电白县| 孟村| 普陀区| 海口市| 赤城县| 光山县| 东兰县| 贵德县| 广昌县| 东乌| 长春市| 姚安县| 来安县| 斗六市|