可以把一個指針聲明成為一個指向函數的指針。
?
intfun1(char*,int);?
int(*pfun1)(char*,int);?
pfun1=fun1;?
....?
....?
inta=(*pfun1)("abcdefg",7);//通過函數指針調用函數。?
可以把指針作為函數的形參。在函數調用語句中,可以用指針表達式來作為實參。?
例十三:?
intfun(char*);?
inta;?
charstr[]="abcdefghijklmn";?
a=fun(str);?
...?
...?
intfun(char*s)?
{?
intnum=0;?
for(inti=0;i{?
num+=*s;s++;?
}?
returnnum;?
}?
這個例子中的函數fun統計一個字符串中各個字符的ASCII碼值之和。前面說了,數組的名字也是一個指針。
在函數調用中,當把str作為實參傳遞給形參s后,實際是把str的值傳遞給了s,s所指向的地址就和str所指向的地址一致,但是str和s各自占用各自的存儲空間。
在函數體內對s進行自加1運算,并不意味著同時對str進行了自加1運算。