| swap(int c,int d) { int t; t=c; c=d; d=t; } main() { int a=2,b=3; swap(a,b); printf(“%d,%d”,a,b); } |
這是不能實(shí)現(xiàn)a和b的數(shù)值互換的,實(shí)際上只是形參在這個函數(shù)中換來換去,對實(shí)參沒什么影響,F(xiàn)在,用指針類型的數(shù)據(jù)做為參數(shù)的話,更改如下:
| swap(#3333FF *p1,int *p2) { int t; t=*p1; *p1=*p2; *p2=t; } main() { int a=2,b=3; int *ptr1,*ptr2; ptr1=&a; ptr2=&b; swap(prt1,ptr2); printf(“%d,%d”,a,b); } |
這樣在swap中就把p1,p2 的內(nèi)容給換了,即把a(bǔ),b的值互換了。
指針可以執(zhí)行增、減運(yùn)算,結(jié)合++運(yùn)算符的法則,我們可以看到:
| *++s | 取指針變量加1以后的內(nèi)容 |
| *s++ | 取指針變量所指內(nèi)容后s再加1 |
| (*s)++ | 指針變量指的內(nèi)容加1 |
指針和數(shù)組實(shí)際上幾乎是一樣的,數(shù)組名可以看成是一個常量指針,一維數(shù)組中ptr=&b[0]則下面的表示法是等價的:
a[3]等價于*(a+3)
ptr[3]等價于*(ptr+3)
下面看一個用指針來自己實(shí)現(xiàn)atoi(字符串型->整型)函數(shù):





