Re: [問題] 關於指標
(原文恕刪)
我改寫了你的程式,沒改太多,只是幫助你理解指標,其中 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
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章