作者wendly777 (小水)
看板C_and_CPP
標題Re: [問題] 關於指標的指標
時間Sat Oct 30 22:02:39 2010
※ 引述《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