[問題] 關於指標

看板C_and_CPP (C/C++)作者 (Jun)時間15年前 (2010/10/23 16:40), 編輯推噓5(505)
留言10則, 4人參與, 最新討論串3/6 (看更多)
請容許各位大大再讓我問個問題,我指標真的有點弱 #include <stdio.h> #include <stdlib.h> #include <string.h> void swap(char *y,int len) { printf("y=%p\n",&y); char temp; temp=*(y+len-1); *(y+len-1)=*(y); *y=temp; } int main(void) { char x[]="Hello"; char *z=x; printf("x=%p\n",x); printf("z=%p\n",z); int len=strlen(x); swap(z,len); printf("%s",x); system("pause"); } 關於這個程式我,我假設X開頭位置是2000,假設z的位置是2010並指向2000這個起始位置 ,y指向z的位置2010,但為什麼y可以更改x的內容呢?並沒有把y設成指標的指標**y 另外若把z拿掉,改成swap(x,len),一樣得到同樣結果?若有人能幫我離清這指標的指標 真是感激不盡! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.70.198.112

10/23 16:45, , 1F
原PO看一下記憶體配置的書再來問會比較好
10/23 16:45, 1F

10/23 16:49, , 2F
我想這篇的問題是出在沒把函數搞懂
10/23 16:49, 2F

10/23 16:51, , 3F
如果指標之牆過不了,原po可以考慮C#還是Java
10/23 16:51, 3F

10/23 16:56, , 4F
逃避不能解決問題, 參考就是指標, 直接拿參考來比較相
10/23 16:56, 4F

10/23 16:56, , 5F
等的也大有人在
10/23 16:56, 5F

10/23 17:03, , 6F
"y指向z的位置2010" ←問題出在這
10/23 17:03, 6F

10/23 17:04, , 7F
可能是看到參數型態有 * 就認為東西傳進去都是會被指
10/23 17:04, 7F

10/23 17:04, , 8F
吧...
10/23 17:04, 8F

10/23 17:18, , 9F
重點是 http://codepad.org/ndshxkY0 你只要跑一次你寫的
10/23 17:18, 9F

10/23 17:19, , 10F
程式碼,就該知道y指向z的位置不對
10/23 17:19, 10F
文章代碼(AID): #1Cmfzov_ (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 3 之 6 篇):
2
3
5
10
3
10
文章代碼(AID): #1Cmfzov_ (C_and_CPP)