C語言指標函式和函式指標詳細介紹

2021-06-27 22:48:03 字數 1392 閱讀 4197

原文在此:

指標與函式

另外,附上一段 learn c the hard way 18章節的**:

#include #include #include #include /** our old friend die from ex17. */

void die(const char *message)

else

exit(1);

}// a typedef creates a fake type, in this

// case for a function pointer

typedef int (*compare_cb)(int a, int b);

/** * a classic bubble sort function that uses the

* compare_cb to do the sorting.

*/int *bubble_sort(int *numbers, int count, compare_cb cmp)}}

return target;

}int sorted_order(int a, int b)

int reverse_order(int a, int b)

int strange_order(int a, int b)

else

}/**

* used to test that we are sorting things correctly

* by doing the sort and printing it out.

*/void test_sorting(int *numbers, int count, compare_cb cmp)

printf("\n");

free(sorted);

}int main(int argc, char *argv)

test_sorting(numbers, count, sorted_order);

test_sorting(numbers, count, reverse_order);

test_sorting(numbers, count, strange_order);

free(numbers);

return 0;

}

可以看到

typedef int (*compare_cb)(int a, int b); 這個函式是函式指標,當 sorted_order , reverse_order , strang_order賦值給形參的時候,這個指標分別就指向了這些函式。

C語言指標函式和函式指標詳細介紹

當乙個函式宣告其返回值為乙個指標時,實際上就是返回乙個位址給呼叫函式,以用於需要指標或位址的表示式中。格式 型別說明符 函式名 引數 當然了,由於返回的是乙個位址,所以型別說明符一般都是int。例如 int getdate int aaa int,int 函式返回的是乙個位址值,經常使用在返回陣列的...

C語言 指標函式和函式指標

指標函式和函式指標 指標函式其實是乙個簡稱,是指帶指標的函式,它本質上是乙個函式,只是返回的是某種型別的指標。其定義的格式為 型別識別符號 函式名 參數列 函式指標,從本質上說是乙個指標,只是它指向的不是一般的變數,而是乙個函式。因為每個函式都有乙個入口位址,函式指標指向的就是函式的入口位址。其定義...

C語言 指標函式和函式指標

1 指標函式是指帶指標的函式,本質上是乙個函式,函式返回值是某一型別的指標 定義 型別識別符號 函式名 參數列 int f int x,int y 它首先是乙個函式,只不過這個函式的返回值是乙個位址值,函式返回值必須用同型別的指標變數來接受,也就是說,指標函式一定有函式返回值,而且,在主調函式中,函...