Day28-函式的指標
那今天要講的是函式的指標
當一個指標指向一個函式時,可以間接使用指標呼叫該函式,而該函式指標的型態必須與函式的回傳型態相同
那我們來做個範例
#include<stdio.h>
#include<stdlib.h>
int add (int ,int);
int main(void){
int ans,(*p) (int x,int y);
p=add;
ans=(*p)(3,4);
printf("%d\n",ans);
system("pause");
}
int add(int x,int y){
return x+y;
}
印出:
解釋:
宣告函式指標p,具兩個整數引數
將p指向函式add
接下來我們做個綜合練習
範例1:
#include<stdio.h>
#include<stdlib.h>
void myputs(char*);
int main(void){
char *str="pointer is fun!";
myputs(str);
system("pause");
return 0;
}
void myputs(char *s){
while (*s != '\0'){
printf("%c",*s);
s++;
}
printf("\n");
}
印出:
解釋:
系統有一puts()函式,接受一個指向字串之指標
範例2:
#include<stdio.h>
#include<stdlib.h>
void mystrcpy(char *,char *);
int main(void){
int result;
char word1[]="I like C";
char word2[]="This is fun";
mystrcpy(word1,word2);
printf("word2=%s\n",word2);
system("pause");
}
void mystrcpy (char *str1,char *str2){
int i;
for(i=0;*(str1+i)!='\0';i++)
*(str2+i)=*(str1+i);
*(str2+i)='\0';
}
印出:
最後別忘記要加\0字元,代表字串的結尾符號
範例3:
#include<stdio.h>
#include<stdlib.h>
void sub(char *,char ,char);
int main(void){
char a,b,s[]="This is fun!";
puts(s);
printf("欲改變字串中的哪個字母,改為");
scanf("%c %c",&a,&b);
sub(s,a,b);
puts(s);
system("pause");
return 0;
}
void sub(char *s,char a,char b){
while (*s !='\0'){
if(*s==a)
*s=b;
s++;
}
}
印出:
那今天就到這拉謝謝大家今天的閱讀