看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《lalaboom (lalaboom)》之銘言: : 之前我的認知陣列名稱是一個常數指標,非指標常數喔, : 1. 請問這個敘述對嗎? : 現在有陣列 int b[2]; : int a[2][3]; : 2. 請問為什麼 b 跟 &b 兩個address會一樣呢? : 我可以理解 a, a[0], &a[0][0] 這3個一樣, : 但是type不同,還是說這個認知也是錯的XD : 3. 陣列在記憶體裏面除了宣告出來的連續空間, : 陣列名稱是否會有另外像宣告指標一樣有一個變數空間嗎? : 關於2之前好像有看到說&b = b 是定義好的 (compiler ? ) : 關於以上問題可能敘述的不是很好, : 有需要我再補充, : 懇請各位解惑 ~ 3Q 先不要管 l-value 跟 r-value 的問題, 這些真的都不重要,重要的是生成後的機械碼。 不過本人從來沒去認真想過 &b 真正存在的價值, 是為了使程式更加安全嗎?像是: 宣告:char b[16]; void func(char (*arr)[16]); 呼叫:func(&b); 強制指定輸入的陣列長度? 不然到底什麼時候會用到啦~?╮( ̄▽ ̄")╭ -- 當教授在講臺上C++的時候,我的臉比佳佳還要沮喪... 講正經的... C++是一個被過度設計的程式語言,完全遭透了! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.91.124 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1431524646.A.73F.html ※ 編輯: Hazukashiine (140.113.91.124), 05/13/2015 21:48:55
wenyonba: 我之前的推文就是跟這篇原Po一樣的想法,我就是不知道&b 05/13 22:00
wenyonba: 到底有啥用??XD 05/13 22:00
Feis: 硬要這麼說的話, C 裡面沒有的東西可多了... 05/13 22:35
Feis: "沒用" 的東西... 05/13 22:35
Feis: 讓陣列能取址是必要的存在. 因為你有多維陣列. 之前推文有 05/13 22:38
Feis: 更廣泛的說是為了讓 aggregate type 更有用. 細節有空再寫 05/13 22:44
wenyonba: 嗯嗯,其實我本身開發很少用C/C++啦,是有學過,所以也是好 05/13 22:55
wenyonba: 奇,所以才會這樣問XD 05/13 22:55
CaptainH: array of fixed-dimension vectors... 05/13 22:57
CaptainH: 或 array of pipe fd pairs,很少見嗎 05/13 22:57
CaptainH: 往前翻發現lvalue rvalue是你提的耶 05/13 22:59
所以? 開宗明義就說這一篇的重點不是放在lvalue跟rvalue啊 ┐(─_─)┌ ※ 編輯: Hazukashiine (140.113.91.124), 05/13/2015 23:12:44
yvb: #define p(n) printf(#n"=%p, size=%d\n",(n),sizeof(*(n))) 05/14 00:45
yvb: char a[32]; 用 p(n) 看 a &a &a[0] a+1 &a+1 &a[0]+1 &a[1] 05/14 00:49
yvb: &a 有什麼用? 我想是語意問題吧. 請認明 a 是 &a[0] 的簡化. 05/14 01:02
yvb: 所以如果 func() 是想傳整個 array, 寫 func(&a ...) 較好, 05/14 01:04
suhorng: 咦 &a 是 &a[0] 的簡化@@? 05/14 01:04
yvb: 但若只是傳入第一個的指標, 那就 func(&a[0]) 或 func(a) 吧 05/14 01:07
yvb: 當然, 傳入第n個的指標就是 func(&a[n]) 或 func(a+n) 05/14 01:08
yvb: suhorng: a 不是 &a. 我指的是位址計算的意義上. 05/14 01:17
yvb: 不然 sizeof(a) 當然不等於 sizeof(&a[0]) 啊. 05/14 01:20
MOONRAKER: 可能只是表示「到此為止」 否則遲早會有人問&&a或&&&a 05/14 10:13
MOONRAKER: 是什麼 煩都煩死了 規定&a=a便不會有這種「天外有天」 05/14 10:14
MOONRAKER: 的問題 天外還是天 再來沒有了 05/14 10:15
TobyH4cker: 有點煩,會用就好 05/14 12:34
uranusjr: 推「天外還是天」 XD 05/14 12:39
MOONRAKER: Asimov說他碰過個教派篤信天圓地方那套 扁平的地面底下 05/14 22:03
MOONRAKER: 是隻大烏龜 Asimov就故意問對方烏龜底下是什麼 對方立 05/14 22:04
MOONRAKER: 刻回答是另一隻龜 龜下還有龜 龜龜相連 05/14 22:07
MOONRAKER: 想想看 每次講到指標都落入標標相連 豈不煩死人 05/14 22:09