[問題] 字串陣列的位址問題??

看板C_and_CPP作者 (千里之外)時間14年前 (2010/06/02 23:15), 編輯推噓3(306)
留言9則, 5人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) #include <stdio.h> #include <stdlib.h> int main(void) { char S[3][10]={"Tom","Lily","Jamse Lee"}; int i; for(i=0;i<3;i++) printf("S[%d]=%s\n",i,S[i]); printf("\n"); for(i=0;i<3;i++) { printf("S[%d]=%p\n",i,S[i]); ^^^^^正常不是應該要&S[i]嗎?? 為什麼書中不用?? 也是跑得出來呢?? printf("address of S[%d][0]=%p\n",i,&S[i][0]); } system("pause"); return 0; } 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) 有問題的code: (請善用置底文標色功能) 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.97.109

06/02 23:35, , 1F
你如果是用SCANF才要&,PRINTF不用加上去
06/02 23:35, 1F

06/02 23:56, , 2F
因為陣列的名字就是他的位址
06/02 23:56, 2F

06/02 23:59, , 3F
就像是 int foo[1]; printf("%p %p", &foo, foo);
06/02 23:59, 3F

06/02 23:59, , 4F
&foo和foo都會是foo這個陣列的位址
06/02 23:59, 4F

06/03 00:17, , 5F
%p - 印出記憶體位置,另外你是二維陣列只給一個[]所以
06/03 00:17, 5F

06/03 00:17, , 6F
得到的是第i行 第一個位置的記憶體位置 ,這樣有懂嗎
06/03 00:17, 6F

06/03 00:18, , 7F
如果你用s[i][j] 就算用%p 也是會出亂馬
06/03 00:18, 7F

06/03 01:34, , 8F
1/2
06/03 01:34, 8F

06/03 09:02, , 9F
1/2
06/03 09:02, 9F
文章代碼(AID): #1C1dMSpu (C_and_CPP)