作者vm6jp6rmp4 (Jun)
看板C_and_CPP
標題[問題] 關於指標
時間Sat Oct 23 16:40:16 2010
請容許各位大大再讓我問個問題,我指標真的有點弱
#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:程式碼,就該知道y指向z的位置不對 10/23 17:19