Re: [問題] 關於指標

看板C_and_CPP (C/C++)作者 (人生啊…)時間15年前 (2010/10/26 10:47), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/6 (看更多)
(原文恕刪) 我改寫了你的程式,沒改太多,只是幫助你理解指標,其中 printf 因為太長 為了 BBS 上畫面好看,我就把它斷行了,你下載回去後再 接上去就行了。 #include <stdio.h> #include <stdlib.h> #include <string.h> void swap(char *y,int len) { printf("swap函數傳入一個指向char的指標參數y, &y就是指標參數y「自己」的位址:%p\n", &y); printf("swap函數傳入一個指向char的指標參數y, y就是指標參數「指向」的位址:%p\n", y); printf("swap函數傳入一個指向char的指標參數y, *y就是指標參數「指向的內容」:%c\n\n", *y); char temp; printf("y指向的位址為%p,(y+len-1)就是y往 下移len(5)-1=4個位址,在%p\n", y, (y+len-1)); printf("y往下移len(5)-1=4個位址,在%p, 這個位址的內容就是*(y+len-1)=%c, 就是指向Hello最後一個字\n\n", (y+len-1), *(y+len-1)); temp=*(y+len-1); *(y+len-1)=*(y); *y=temp; } void main(void) { char x[]="Hello"; char *z=x; printf("x是一個指標變數它「指向的地 方」為:%p\n", x); printf("&x就是x「自己」的位址為: %p(等於自己指向自己)\n", &x); printf("&x = &x[0]兩個寫法意思一樣 ,都是:%p\n", &x[0]); printf("*x就是x指向地方「的內容」為: %c這個字\n\n", *x); printf("z是一個指向char的指標變數, &z就是z「自己」的位址:%p\n", &z); printf("z是一個指向char的指標變數, z就是z「指向的位址」:%p\n", z); printf("z是一個指向char的指標變數, *z就是z「指向的內容」:%c\n\n", *z); int len=strlen(x); swap(z,len); printf("%s\n",x); } 底下是我用VC6跑出來的結果(各種編譯器我想大同小異),但你的位址和我 跑出來的位址不同,是正常的,請安心食用: x是一個指標變數它「指向的地方」為:0012FF78 &x就是x「自己」的位址為:0012FF78(等於自己指向自己) &x = &x[0]兩個寫法意思一樣,都是:0012FF78 *x就是x指向地方「的內容」為:H這個字 z是一個指向char的指標變數,&z就是z「自己」的位址:0012FF74 z是一個指向char的指標變數,z就是z「指向的位址」:0012FF78 z是一個指向char的指標變數,*z就是z「指向的內容」:H swap函數傳入一個指向char的指標參數y,&y就是指標參數y「自己」的位址:0012FF1C swap函數傳入一個指向char的指標參數y,y就是指標參數「指向」的位址:0012FF78 swap函數傳入一個指向char的指標參數y,*y就是指標參數「指向的內容」:H y指向的位址為0012FF78,(y+len-1)就是y往下移len(5)-1=4個位址,在0012FF7C y往下移len(5)-1=4個位址,在0012FF7C,這個位址的內容就是*(y+len-1)=o ,就是指向Hello最後一個字 oellH Press any key to continue -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.76.74.145
文章代碼(AID): #1Cna4_n2 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Cna4_n2 (C_and_CPP)