1、what
a. 指標:
指標可以看做是乙個特殊的變數,它是用來存放變數的位址值的。
b. 引用
引用的話,可以看做是給變數起的乙個別名,而不是定義乙個新變數,它與那個變數的本質是相同的,內容與位址都是一樣的。
2、distinction
a. 引用使用時無需解引用(*),指標需要解引用;
b. 引用沒有 const,指標有 const;
c. 指標是乙個實體,而引用僅是個別名;
d. 從記憶體分配上看:程式為指標變數分配記憶體區域,而引用不需要分配記憶體區域,因為指標是乙個新的變數,而引用僅僅是乙個別名而;
e. 引用在定義時必須初始化,指標沒有要求;
f. 一旦乙個引用被初始化為指向乙個物件,就不能再指向其他物件,而指標可以在任何時候指向任何乙個同型別物件。這兒可以看出指標是很花心的,而引用則是一心一意的,所以我們要多用引用;
g. 沒有null引用,但有null指標;
h. 在sizeof中含義不同:引用結果為引用的變數的型別的大小,但指標始終是位址空間所佔位元組個數(4個位元組);
i. 引用自加改變變數本身的內容,指標自加改變了指標指向,跳過該指標指向的物件所佔的空間大小;
j. 有多級指標,但是沒有多級引用;
k. 引用比指標使用起來相對更安全。
C 之指標,引用與陣列
引用只是物件的另乙個名字,通過在變數名前面新增 符號來定義,而指標儲存的是另乙個物件的位址,它們兩都提供了間接訪問所服務變數的途徑。但是它們的差別還是挺大的 先從它們的值說起,乙個有效的指標值通常具有三種面孔,一是儲存乙個特定物件的位址,而且一般是用取位址符號 把該特定物件的位址拿出來賦 給指標 二...
C 指標與引用
include 引用傳遞 int add1 int x,int y 指標傳遞 int add2 int x,int y 值傳遞 int add3 int x,int y void main int a 1 int b a 引用,表示b的引用指向了a 定義引用 開頭 必須賦初值 引用變數不占用記憶體 ...
C 指標與引用
從函式引數傳遞說起 int addition int x,int y int main void duplicate int a,int b int main 按值傳遞,顧名思義,函式形參僅僅得到變數傳來的值,函式的任何操作並不對變數產生任何變化 按位址傳遞,他的定義方式與按值傳遞不一樣 注意其在m...