看板 C_and_CPP 關於我們 聯絡資訊
請容許各位大大再讓我問個問題,我指標真的有點弱 #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
stupid0319:原PO看一下記憶體配置的書再來問會比較好 10/23 16:45
loveflames:我想這篇的問題是出在沒把函數搞懂 10/23 16:49
stupid0319:如果指標之牆過不了,原po可以考慮C#還是Java 10/23 16:51
loveme00835:逃避不能解決問題, 參考就是指標, 直接拿參考來比較相 10/23 16:56
loveme00835:等的也大有人在 10/23 16:56
loveflames:"y指向z的位置2010" ←問題出在這 10/23 17:03
loveme00835:可能是看到參數型態有 * 就認為東西傳進去都是會被指 10/23 17:04
loveme00835:吧... 10/23 17:04
purpose:重點是 http://codepad.org/ndshxkY0 你只要跑一次你寫的 10/23 17:18
purpose:程式碼,就該知道y指向z的位置不對 10/23 17:19