標籤:style blog color io ar for sp div c
指標函數
//指標函數#include"stdio.h"char *arr[]={"AAA","BBB","CCC"};//數組裡面裝字串的時候只能用指標的形式,裡面裝的是各個字串的地址char *fun(int n);main(){ int i=0; for(i=0;i<3;i++) { printf("%s\n",fun(i)); }}char *fun(int n){return (arr[n]);}
函數指標
//函數指標#include"stdio.h"unsigned char AAA(void); //聲明函數AAAunsigned char BBB(void); //聲明函數BBBunsigned char CCC(void); //聲明函數CCCtypedef unsigned char (*pFun)(void); //定義函數指標pFun 注意:這裡面必須得用typedef來定義pFun,其實相當於定義了一種新的類型類似於int.pFun arr[]={AAA,BBB,CCC};main(){ int i=0; unsigned char output=‘x‘; for(i=0;i<3;i++) { output=(arr[i])(); printf("%c\n",output); }}unsigned char AAA(void){return ‘A‘;}unsigned char BBB(void){return ‘B‘;}unsigned char CCC(void){return ‘C‘;}
指標函數和函數指標相結合
//函數指標和指標函數相結合#include"stdio.h"unsigned char AAA(void); //聲明函數AAAunsigned char BBB(void); //聲明函數BBBunsigned char CCC(void); //聲明函數CCCtypedef unsigned char fun(void); //自訂fun類型fun *arr[]={AAA,BBB,CCC}; //如果上面不自定fun類型,arr的類型將無法準確定義,假設你定義成unsigned char雖然沒有error,但是也會有warningmain(){ int i=0; unsigned char output; for(i=0;i<3;i++) {// output=((unsigned char(*)(int))arr[i])(0); output=((unsigned char(*)(void))arr[i])();//根據函數的地址來調用函數的兩種方式 printf("%c\n",output); }}unsigned char AAA(void){return ‘A‘;}unsigned char BBB(void){return ‘B‘;}unsigned char CCC(void){return ‘C‘;}
指標函數和函數指標