先看函數指針 int func2(int x); /* 聲明一個函數 */ int (*q2) (int x); /* 聲明一個函數指針 */ q2=func2; /* 將func函數的首地址賦給指針f */ int c=(*q2)(3); //3可以為任意實參 上面4句基本說明了函數指針的用法: 函數指針是指向函數的指針,確切的說,是指向特定類型函數的指針(函數與函數指針 類型要匹配) 函數指針用來保存函數首地址,即可以通過該指針訪問函數。函數指針相當於取別名。 函數指針可以指向一類函數,而不是一個函數,即可以重新賦值。(見例2) 函數指針不難,只要記住上面黑體字就差不多了,附上兩個簡單的例子 例1: View Code
例2:
View Code再看指針函數: int *func(int x);/* 聲明一個指針函數 */ int *q; /* 聲明一個指針 */ q=func(3);//3可以為任意實參 上面三句基本說明了指針函數: 指針函數是返回值為指針的函數,所以我們在main()中調用它時可以用一個同類型的指針來接收。 指針函數可以用來解決眾多問題,如返回多個值的問題。(見"函數返回多個值的方法"那篇文章) 指針函數比經常更經常用到,一定要學會用 指針函數邏輯簡單,結構清新,功能強大,質量好,效率高,堪比極品中的鳳姐,勝過。。。(求下聯),反正不學會真是損失。 例3也是百度來的,個人覺得很經典,涉及到了指針,數組指針,指針函數,二維數組的賦值,函數返回多個值,數組指針的自增與指針自增的區別。。。眾多知識。看懂這個基本指針這一塊差不多了。 例3:
#include<iostream> *find( (*p)[], m); score[][]={{,,,},{,,,},{,,,}}; *pf=NULL; >>=find(score,m); (i=;i<;i++<<*(pf+i)<< << *find( (*p)[], *pf==*(p+m);
pf=*(p+m);//p是指向二維數組的指針,加*取一維數組的指針
這句很經典。