code.club

 找回密碼
 立即註冊
搜索
查看: 8263|回復: 1
打印 上一主題 下一主題

指標和參考

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2016-3-27 22:48:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
指標和參考或稱參照,很容易搞迷糊,網路上有先進寫了一些方法幫助記憶。

指標和參考之所以難懂,有很大一部份的原因是符號上的陌生所致。加上&既能用於取址又能用於參考,容易造成初學者的混淆。下面我們提供幾個建議來幫助各位看懂這些符號。
把int *p視為 int* p。
把int和*連在一起看,當作是一種型態叫做 "指向整數之指標",要比int *p自然得多。同樣的方式也可以套在char* p或void* p等。但要注意的是下面的狀況:
int* p, q;

不要把這行誤解成p, q都是指向int之指標,事實上,q只是一個int變數。上面這行相當於
int *p, q;

int *p; int q;

如果p, q都要宣告成指向int之指標,應寫成:
int *p, *q

或者干脆分兩行寫:
int* p;
int* q;

若&前面有資料型態 (ex: int &),則為參考,&前面有等號 (ex: int* p = &a),則為取址。
由於&同時具有多種意義,因此容易造成混淆。這裡列出的這個方法,可以幫助弄清楚每個&的意義。
回復

使用道具 舉報

沙發
發表於 2017-1-21 02:51:03 | 只看該作者
void swap(int a, int b){
int tmp = a;
a = b;
b = tmp;
}

則呼叫

swap(x, y)

後,x和y的值並不會有變化。

void swap(int* a, int* b){
int tmp = *a;
*a = *b;
*b = tmp;
}

呼 叫swap時,要寫成swap(&x, &y)。

swap(int &a, int &b){
int tmp = a;
a = b;
b = tmp;
}

未來使用時,只要呼叫swap(x, y),就可以讓x和y的值交換。
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|手機版|Archiver|code.club  

GMT+8, 2024-11-23 17:33 , Processed in 0.099151 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表