Re: [問題] 雙重指標的問題
: #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得到了temp的堆疊位置
: *(ptr+0) = string1;
: *(ptr+1) = string2;
: *(ptr+2) = string3;
以上三行嘗試竄改堆疊的內容
也就是期待使得
temp = "BOOK"
string1 = "FOR"
string2 = "YOU"
假使這些變數在宣告的時候沒有碰到程式碼重新排列的問題
(如inlined function invocation加上optimize使得實際上堆疊的順序有變)
則可以以ptr相對位置來存取
: 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: 118.171.84.133
推
12/20 02:40, , 1F
12/20 02:40, 1F
討論串 (同標題文章)