作者pongremix (洪爺不賣漢堡)
看板C_and_CPP
標題[問題] 雙重指標的問題
時間Sun Dec 20 01:37:06 2009
( *[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
推 VictorTom:等等, 那個*(ptr+1)和*(ptr+2)應該都不能用的吧!? 12/20 01:42
→ sunneo:temp至少要是char* temp[3]吧 12/20 01:46
→ sunneo:不然這樣要跑的話 得看看有無stack alignment 12/20 01:46
→ pongremix:樓上大大這樣可以跑說 12/20 01:49
→ pongremix:感謝回答 謝謝 12/20 01:53