函式指標 與 指標函式
阿新 • • 發佈:2019-02-02
童鞋們,別搞混了!
函式指標顧名思義:是一個指標指向了一個函式。(這是一個函式,只不過這個函式由一個指標指向它)
當然,此函式的返回值同樣可以返回一個指標 -》一個指標指向了一個指標函式 (真tm繞啊,重在理解)
例子:
- /*
- * 求最大值
- * 返回值是int型別,返回兩個整數中較大的一個
- */
- int max(int a, int b) {
- return a > b ? a : b;
- }
- /*
- * 求最小值
- * 返回值是int型別,返回兩個整數中較小的一個
- */
- int min(int a, int b) {
-
return
- }
- int (*f)(int, int); // 宣告函式指標,指向返回值型別為int,有兩個引數型別都是int的函式
- int _tmain(int argc, _TCHAR* argv[])
- {
- printf("------------------------------ Start\n");
- f = max; // 函式指標f指向求最大值的函式max
- int c = (*f)(1, 2);
- printf("The max value is %d \n", c);
-
f = min; // 函式指標f指向求最小值的函式min
- c = (*f)(1, 2);
- printf("The min value is %d \n", c);
- printf("------------------------------ End\n");
- getchar();
- return 0;
- }
指標函式: 這個函式的返回值是一個指標
例子:
- /*
- * 指標函式的定義
- * 返回值是指標型別int *
- */
- int *f(int a, int b) {
- int *p = (int *)malloc(sizeof(int));
-
printf("The memeory address of p = 0x%x \n"
- memset(p, 0, sizeof(int));
- *p = a + b;
- printf("*p = %d \n", *p);
- return p;
- }