作者bemyself (self)
看板Programming
標題[問題]二維字串陣列的內涵
時間Thu Jul 14 23:22:02 2011
如果說字串陣列的名字所存的就是這個陣列在記憶體中的位址
那麼對一個字串用一個一維陣列存取而言 也就是第一個字元的位址
亦即&[array_name][0]
那如果我宣告一個二維陣列 char s[3][10] = {{abcd},{efgh},{hijk}};
那像s[1]就是拿取第二個字串"efgh"
而且s[1] == &(s[1][0])
那嚜s[i]就是一個一維陣列 存放著三個陣列的第一個字元的位址啊
且是一個array of pointer to character, i.e., string
那為何我printf("%p %p",s[1],&s[1]);時 印出來的是一樣的位址呢
不是應該前者是字串第一個字的位址 後者是存這前者的pointer的位址?
是哪裡出問題了?這種問題真的要弄懂啊 不然寫起來都怕怕的-皿-
請救救我......
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.241.190
→ firejox:這跟你printf("%s",s[1]);不加&的道理是一 123.240.129.15 07/14 23:24
→ firejox:樣的 123.240.129.15 07/14 23:24
→ bemyself:意思是s[1]和&s[1]的值是同一個?怪怪的..140.112.241.190 07/14 23:58
推 nowar100:s[1] 代表走了一個 char [10] 到 e 的位 114.24.202.187 07/15 00:18
→ nowar100:指到的位址都一樣,只是型態不同,解讀 114.24.202.187 07/15 00:19
→ nowar100:方式不同 114.24.202.187 07/15 00:20
→ purpose:你猜了很多東西,都不對,先去翻書吧 124.8.145.156 07/15 01:03
→ bemyself:我知了 不過後來弄懂了XD 感謝樓上點醒140.112.241.190 07/16 00:47