[問題] 關於取址運算元 & 的一些迷思

看板C_and_CPP (C/C++)作者 (小乖)時間16年前 (2009/05/21 16:30), 編輯推噓3(302)
留言5則, 4人參與, 最新討論串1/1
char str[] = "Sammy236"; str 的型態應該是 const char[9] 若是想對於其內容做些讀取的動作 以我自己的經驗是宣告一個指標指到此字串陣列 再利用指標作處理 char* pc = str; char c = pc[0]; // 讀取字元 str 的裡面存放的是字串陣列第一個元素的位址(很直觀) 但我有看到另外一種寫法,有點顛覆我的觀念 ><" 如下 char* pc = (char*)&str; 這我就無法用上面的解釋來說明 第一個元素位址在取位址?? 下面是測試範例,結果兩個 pc 位址都一樣,印出的字串也相同。 請問第二種要如何來解釋他的用法 謝謝 ======================================== int main(int argc, char* argv[]) { char str[] = "Sammy236"; char* pc = str; //mark1 printf("pc = %d\n",pc); printf("%s \n",pc); pc = (char*)&str; //mark2 printf("pc = %d\n",pc); printf("%s \n",pc); return 0; } ========================================== -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.97.179

05/21 17:22, , 1F
"迷思"不是這樣用的
05/21 17:22, 1F

05/21 17:24, , 2F
印象中陣列的址好像就是它自己
05/21 17:24, 2F

05/21 17:34, , 3F
str 的型態應該「不」是 const char[9]吧
05/21 17:34, 3F

05/21 18:58, , 4F
C 陣列的 name 和 &name 是相同的
05/21 18:58, 4F

05/21 22:11, , 5F
哇勒 還迷魂勒 話說 func pointer好像 測試出來也一樣歐
05/21 22:11, 5F
文章代碼(AID): #1A5H53Is (C_and_CPP)
文章代碼(AID): #1A5H53Is (C_and_CPP)