看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《vm6jp6rmp4 (Jun)》之銘言: : int main(void) : { : char x[]="Hello"; 這邊是在堆疊中宣告一塊記憶體擺"Hello" 假設記憶體是宣告在0x00020000; 所以 0x00020000放'H' 0x00020001放'e' . . . 0x00020004放'o' 0x00020005放null : char *z=x; //想設定z指向x; z是一個char*假設宣告在0x00020008 z的值為0x0002000 (x的位址) : int len=strlen(x); : char **y; : y=&z;//設定指標的指標y指向z的位置**y為x的第一個內容 y是一個char**假設宣告在0x0002000C y的值為0x00020008 : char temp; : temp=**(y+len-1);//此時想要更改x的o到temp? 操作y指標一次是偏移4個byte y+1是指到z的下4個byte 所以 y+1是指到0x0002000C y+2是指到0x00020010 y+3是指到0x00020014 這跟你想要做的操作是完全不同的 你應該是想對字串操作 正確的用法 應該是操作(*y) (*y)是指到0x00020000 (*y)+1是指到0x00020001 (*y)+len-1才是指到0x00020004 也就是'o'的位址 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.127.112
jehovah:清楚明瞭:D 10/30 23:26
i78524: 學到很多 12/04 21:36