想要指定函式的返回值 (*指標的名稱)(引數1,引數2,…);
//意思就是想指向的那個函式的返回值為void型別
//並且該函式有兩個引數,第乙個引數為string*型別,第二個引數為int型別
//該指標的名稱是p
void
(*p)
(string*
,int
);
注意看裡面的注釋
#include
#include
#include
using
namespace std;
//陣列在形參中會退化成指標
void
yue1
(string steps,
int n)
}void
yue2
(string steps,
int n)
intmain()
;/**p就是乙個函式指標,是乙個指向返回值為void
*且第乙個引數為string*
*第二個引數為int
*/void
(*p)
(string*
,int);
//給函式指標賦值
p = yue1;
//函式名是位址,不過你也可以加&,加上也還是位址效果一樣
p(gonglue,3)
; cout <<
"\n******************\n"
<< endl;
//指向yue2函式
p = yue2;
p(gonglue,3)
;system
("pause");
return0;
}
執行結果:
如果每個函式指標都要像之前那樣定義的話,那麼想想就麻煩
void
(*p)
(string*
,int);
void
(*p1)
(string*
,int);
void
(*p)
(string*
,int
);
這樣是不是有點不舒服,所以我們要用到typedef來簡化我們的函式指標的寫法,不過在對於函式指標的用法中和以往對於普通變數的重新命名不一樣,看**和注釋!!
#include
#include
#include
using
namespace std;
//定義了一種資料型別,資料型別的名字叫做p_t
//使用這種資料型別定義的變數就是函式指標
typedef
void
(*p_t)
(string*
,int);
//這裡用的typedef比較特別,這裡的用法就是函式指標的特有的typedef操作和以往的typedef int int32;不一樣
p_t p;
//等效於void (*p)(string*, int);
void
yue1
(string steps,
int n)
}void
yue2
(string steps,
int n)
intmain()
;/**p就是乙個函式指標,是乙個指向返回值為void
*且第乙個引數為string*
*第二個引數為int
*///void (*p)(string*, int);
給函式指標賦值
//p = yue1;//函式名是位址,不過你也可以加&加上也還是位址
//p(gonglue, 3);
//cout << "\n******************\n" << endl;
//p = yue2;
//p(gonglue, 3);
p_t p1 = yue1;
p1(gonglue,3)
; cout <<
"\n**********************\n"
<< endl;
p_t p2 = yue2;
p2(gonglue,3)
;return0;
}
執行結果:
函式指標還是蠻重要的,希望這篇文章能幫助到大家,如果該文章存在一些問題或者說是有不同理解的話希望同學們都可以提出來,謝謝?(。・∀・)ノ
深入理解C C 函式指標
函式指標陣列的妙用 筆者在開發某軟體過程中遇到這樣乙個問題,前級模組傳給我二進位制資料,輸入引數為 char buffer和 int length,buffer是資料的首位址,length表示這批資料的長度。資料的特點是 長度不定,型別不定,由第乙個位元組 buffer 0 標識該資料的型別,共有2...
深入理解C C 函式指標
函式指標陣列的妙用 筆者在開發某軟體過程中遇到這樣乙個問題,前級模組傳給我二進位制資料,輸入引數為 char buffer和 int length,buffer是資料的首位址,length表示這批資料的長度。資料的特點是 長度不定,型別不定,由第乙個位元組 buffer 0 標識該資料的型別,共有2...
深入理解C C 函式指標
函式指標陣列的妙用 筆者在開發某軟體過程中遇到這樣乙個問題,前級模組傳給我二進位制資料,輸入引數為 char buffer和 int length,buffer是資料的首位址,length表示這批資料的長度。資料的特點是 長度不定,型別不定,由第乙個位元組 buffer 0 標識該資料的型別,共有2...