[問題] 雙重指標的問題

看板C_and_CPP作者 (洪爺不賣漢堡)時間14年前 (2009/12/20 01:37), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/2 (看更多)
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 程式執行到一半有問題,只印到BOOK就停住了 希望得到的正確結果: 最後印出BOOK FOR YOU 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC++ 6.0 on vista 有問題的code: (請善用置底文標色功能) #include <stdio.h> int main(void) { char **ptr; int n,m; char *temp; char *string1="BOOK"; char *string2="FOR"; char *string3="YOU"; ptr=&temp; *(ptr+0) = string1; *(ptr+1) = string2; *(ptr+2) = string3; printf("\n ptr 的位址 = %p\n", ptr); for (n=0;n<3;n++) { printf("\n *(ptr+%d) 所存的位址 = %p\n",n,*(ptr+n)); printf("*(ptr+%d) 指向字串 %s\n",n,*(ptr+n)); for (m=0; *(*(ptr+n)+m) != '\0';m++) printf("*(*(ptr+%d)+%d)=%c \n",n,m,*(*(ptr+n)+m)); } return 0; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.168.2.36

12/20 01:42, , 1F
等等, 那個*(ptr+1)和*(ptr+2)應該都不能用的吧!?
12/20 01:42, 1F

12/20 01:46, , 2F
temp至少要是char* temp[3]吧
12/20 01:46, 2F

12/20 01:46, , 3F
不然這樣要跑的話 得看看有無stack alignment
12/20 01:46, 3F

12/20 01:49, , 4F
樓上大大這樣可以跑說
12/20 01:49, 4F

12/20 01:53, , 5F
感謝回答 謝謝
12/20 01:53, 5F
文章代碼(AID): #1BBGz5q2 (C_and_CPP)
文章代碼(AID): #1BBGz5q2 (C_and_CPP)