請問 變數名稱[ ]在主函數和成為引數更變地址的問題! |
答題得分者是:ikk
|
l90425
初階會員 發表:95 回覆:152 積分:49 註冊:2008-04-03 發送簡訊給我 |
請問一件事
[code cpp] # include void ab(int c[]); using namespace std; int main(int argc, char* argv[]) { int a[3]={1,2,3}; int d[] int *b=a; cout<<&d[0]< //d =1; cout< getchar(); return 0; } //--------------------------------------------------------------------------- void ab(int c[]) { cout< cout< [/code] 為什麼 c[]能更變地址,而d[]卻不能更變地址呢?主是為什麼? 及能不能將a的內容給d[]呢? 能否請大大替我解疑惑呢!謝謝!! 謝謝!
------
-謝謝大大熱心的回覆!謝謝! |
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
l90425
初階會員 發表:95 回覆:152 積分:49 註冊:2008-04-03 發送簡訊給我 |
|
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
l90425
初階會員 發表:95 回覆:152 積分:49 註冊:2008-04-03 發送簡訊給我 |
|
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
剛好有空手癢來回你一下,不過,萬一… 你滿意我的回答,也請不要給我分數,我是半路殺出來插花的! ok?! 請給樓上的前輩…
1/ 補充說明: 肯定沒直接給(改)值的方法,因為那個值經過link後變成"常數"(位址),當然無法把常數再指定或修改成任意的值,這是陣列名與指標最大不同的地方! 詳情要去了解變數與記憶體的關係。 2/ int c[ ] 等同 int *c 而不等於 int *c[3],但雷同於 int c[3] ,我想補充是的最後一個雷同。 int c[ ] 與 int c[3]。 在一維的情形下看不出int c[ ] 與 int c[3]的不同,但在2維的情形時,比如說 int c[ ] [ ] 與 int c [ ] [3] 就有很大的不同。因為有3的這種宣告才可以使用 c[1][2] 之類的取值,相對的另一種則會出錯,因為compiler不知道參數代入的第二維度,以致於算不出對應的值。也許你不太明白,但就記得有這樣一件事就好,以後有用到就可以回想… 3/ a給d的方式除了用for以外,還可以用memcpy(d, a, sizeof(d)); ===================引 用 l90425 文 章=================== 嗯嗯!看來是沒有那種直接給予的方法 請問void ab(int c[]) 的int c[]等同這個 int *c[3]還是這個int *c還是? (ps:儲存地址值的位置是保留3還是一般的指標只有一個) 謝謝!!
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
l90425
初階會員 發表:95 回覆:152 積分:49 註冊:2008-04-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |