函數名做函數參數及宏定義2個細節


函數名做函數參數

記下來備忘,基礎牢固一些,會減少一些不必要的錯誤

1 //定義比較函數max(int,int) 
 2 int max(int a,int b)
 3 {
 4     return a>b?a:b;
 5 } 
 6 //指針fun作為compare函數的形式參數1,表明compare函數的形參1為
 7 // 有2個 int型 參數的 函數指針(或稱之為函數地址/入口)
 8 //注意:int (*fun)(int,int)並不需要fun指針指向函數的參數 如下調用時***
 9 //compare內部調用fun指針指向的函數,此函數的參數為c,d 
10 int compare(int (*fun)(int,int),int c,int d)
11 {
12      return fun(c,d);
13 }
14 
15 int main(int argc, char *argv[])
16 {
17     int temp1 = 0,temp2 = 3;
18     //***
19     //調用時,實參只需填入參數為(int,int)型的函數地址(函數名即位函數地址) 
20     printf("max = %2d\r\n",compare(max,temp1,temp2));
21 }

  

運行結果:

 

 

 


 

宏定義#undef以及多行宏定義 

#undef  將已定義的宏定義撤銷;

多行宏定義  宏定義內容過長或為了閱讀便利而將一行內容拆分為多行

#ifdef MYDEFINE
#undef MYDEFINE	
#endif

#define STR1 "This is my\  //符號"\"連接本行與下一行,作用相當於字符串的重載"+"
 my test\
 string"

主函數內容如下:

#ifdef MYDEFINE
    printf("use mydefine\r\n");
#else
  printf("%s\r\n",STR1);
#endif

運行結果如下:

 

 


 

小結  

越是基礎,細節的東西,越要重視。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM