第七章 指針和函數(shù)的關(guān)系
可以把一個(gè)指針聲明成為一個(gè)指向函數(shù)的指針。
int fun1(char*,int);
int (*pfun1)(char*,int);
pfun1=fun1;
....
....
int a=(*pfun1)("abcdefg",7);//通過(guò)函數(shù)指針調(diào)用函數(shù)。
可以把指針作為函數(shù)的形參。在函數(shù)調(diào)用語(yǔ)句中,可以用指針表達(dá)式來(lái)作為
實(shí)參。
例十三:
int fun(char*);
int a;
char str[]="abcdefghijklmn";
a=fun(str);
...
...
int fun(char*s)
{
int num=0;
for(int i=0;i {
num+=*s;s++;
}
return num;
}
這個(gè)例子中的函數(shù)fun統(tǒng)計(jì)一個(gè)字符串中各個(gè)字符的ASCII碼值之和。前面說(shuō)
了,數(shù)組的名字也是一個(gè)指針。在函數(shù)調(diào)用中,當(dāng)把str作為實(shí)參傳遞給形參s后
,實(shí)際是把str的值傳遞給了s,s所指向的地址就和str所指向的地址一致,但是
str和s各自占用各自的存儲(chǔ)空間。在函數(shù)體內(nèi)對(duì)s進(jìn)行自加1運(yùn)算,并不意味著同
時(shí)對(duì)str進(jìn)行了自加1運(yùn)算。
可以把一個(gè)指針聲明成為一個(gè)指向函數(shù)的指針。
int fun1(char*,int);
int (*pfun1)(char*,int);
pfun1=fun1;
....
....
int a=(*pfun1)("abcdefg",7);//通過(guò)函數(shù)指針調(diào)用函數(shù)。
可以把指針作為函數(shù)的形參。在函數(shù)調(diào)用語(yǔ)句中,可以用指針表達(dá)式來(lái)作為
實(shí)參。
例十三:
int fun(char*);
int a;
char str[]="abcdefghijklmn";
a=fun(str);
...
...
int fun(char*s)
{
int num=0;
for(int i=0;i {
num+=*s;s++;
}
return num;
}
這個(gè)例子中的函數(shù)fun統(tǒng)計(jì)一個(gè)字符串中各個(gè)字符的ASCII碼值之和。前面說(shuō)
了,數(shù)組的名字也是一個(gè)指針。在函數(shù)調(diào)用中,當(dāng)把str作為實(shí)參傳遞給形參s后
,實(shí)際是把str的值傳遞給了s,s所指向的地址就和str所指向的地址一致,但是
str和s各自占用各自的存儲(chǔ)空間。在函數(shù)體內(nèi)對(duì)s進(jìn)行自加1運(yùn)算,并不意味著同
時(shí)對(duì)str進(jìn)行了自加1運(yùn)算。