C++ 中引用和指針的關係
C語言傳遞參數均是以值傳遞,另外也可以傳遞指針。下面是小編分享的C++ 中引用和指針的`關係,一起來看一下吧。
1.引用在定義時必須初始化,指針沒有要求
int &rNum; //未初始化不能通過編譯
int *pNum; //可以
2. 一旦一個引用被初始化為指向一個對象,就不能再指向
其他對象,而指針可以在任何時候指向任何一個同類型對象
int iNum = 10;
int iNum2 = 20;
int &rNum = iNum;
&rNum = iNum2; //不能通過
3. 沒有NULL引用,但有NULL指針。
int *pNum = NULL; //可以
int &rNum = NULL;//不可以
4. 在sizeof中含義不同:引用結果為引用類型的大小,但指針始終是地址空間所佔字節個數。
char c1 = 1;
char* pc = &c1;
char& rc = c1;
cout<<sizeof(pc)<<sizeof(rc)<<endl; //輸出4 1
5. 引用自加改變變量的內容,指針自加改變了指針指向
rNum++; //指針的內容改變
pNum++; //指針改變
6. 有多級指針,但是沒有多級引用
int &&rNum ; //不可以
int **ppNum; //可以
7.引用比指針使用起來相對更安全
指針和引用的底層實現
int Num = 10;
012213BE mov dword ptr [Num],0Ah
int &rNum = Num;
012213C5 lea eax,[Num]
012213C8 mov dword ptr [rNum],eax
int *pNum =&Num;
012213CB lea eax,[Num]
012213CE mov dword ptr [pNum],eax
底層的實現方式相同,都是按照指針的方式來實現的
-
2017計算機二級C語言精選習題
多做題有助於同學們及時檢測自己的學習情況。希望提供的2017計算機二級C語言精選習題,能夠幫助大家鞏固所學知識,為今後的學習打好基礎!(1)OSI模型的'物理層負責下列哪一種功能?A)格式化報文B)為數據選擇通過網絡的路由C)定義連接到介質的特徵D)提供遠程文件訪...
-
內部排序之堆排序的實現
堆排序(HeapSort)只需要一個記錄大小的輔助空間,每個待排序的記錄僅佔有一個存儲空間。下面小編為大家整理了內部排序之堆排序的實現,希望能幫到大家!(1)基本概念a)堆:設有n個元素的序列:{k1,k2,...,kn}對所有的i=1,2,...,(int)(n/2),當滿足下面關係:ki≤k2i,ki≤k2i+1或ki...
-
C語言自增(++)和自減(--)
C語言源自KenThompson發明的B語言,那麼大家知道C語言自增(++)和自減(--)是什麼呢?下面一起來看看!一個整數自身加一可以這樣寫:a+=1;它等價於a=a+1;。但是在C語言中還有一種更簡單的寫法,就是a++;或者++a;。這種寫法叫做自加或自增;意思很明確,就是自身加一。相應...
-
初學C語言的人最常問的幾個問題
C語言是一門通用計算機編程語言,應用廣泛。對於新手來説學習C語言並不是那麼容易,下面是C語言初學者最常問的幾個問題,歡迎閲讀!1.多久能學會編程?這是一個沒有答案的問題。每個人投入的時間、學習效率和基礎都不一樣。如果你每天都拿出大把的時間來學習,那麼兩三...