<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 函數指針 一個函數在編譯的時候被分配一個入口地址,這個地址就稱為函數的指針,函數名代表函數的入口地址 函數的三要素: 名稱,參數,返回值.C語言智能函數有自己特定的類型 c語言通過typedef為函數類型重命名 ~~~ typedef int f(int, int); //f為函數類型 typedef void p(int); //p為函數類型 ~~~ # 定義函數類型 ~~~ int myfunc(int a, char b) { printf("myfunc\n"); return 0; } int main() { //定義函數類型,通過類型來定義函數指針 typedef int(FUN_TYPE)(int, char); FUN_TYPE *pFunc = myfunc; pFunc(10, '2'); (*pFunc)(20, '1'); myfunc(11, 's'); getchar(); return 0; } ~~~ # 定義函數指針類型 ~~~ int myfunc(int a, char b) { printf("myfunc\n"); return 0; } int main() { //定義函數指針類型 typedef int(*FUN_P)(int, char); FUN_P pFunc2 = myfunc; pFunc2(10, '2'); getchar(); return 0; } ~~~ # 函數指針 ~~~ int con1(int a, int b) { return a + b; } int con2(int a, int b) { return a - b; } int main() { int (*pFunc)(int, int) = con2; int ret = pFunc(10, 20); printf("%d\n", ret); getchar(); return 0; } ~~~ # 函數指針做函數參數 **可以做回調函數** ~~~ typedef void(*print_type)(void *); ~~~ ~~~ int con1(int a, int b) { return a + b; } int con2(int a, int b) { return a - b; } void doLogic(int (*pFunc)(int, int)) { int a = 10; int b = 20; int ret = pFunc(a, b); printf("%d\n", ret); } int main() { doLogic(con1); getchar(); return 0; } ~~~ # 函數指針數組 ~~~ void func1() { printf("func1\n"); } void func2() { printf("func2\n"); } void func3() { printf("func3\n"); } int main() { void (*func_array[3])(); func_array[0] = func1; func_array[1] = func2; func_array[2] = func3; for (int i = 0; i < 3; ++i) { func_array[i](); } getchar(); return 0; } ~~~ # 函數指針做參數的例子 ~~~ typedef void(*print_type)(void *); void printAllArray(void *arr, int eleSize, int len, print_type print) { char *start = (char *) arr; for (int i = 0; i < len; ++i) { char *eleAddr = start + i * eleSize; print(eleAddr); } } void MyPrint(void *data) { int *p = (int *) data; printf("%d \n", *p); } struct Person { char name[64]; int age; }; void MyPrintPerson(void *data) { struct Person *person = (struct Person *) data; printf("Name:%s Age:%d\n", person->name, person->age); } int main() { int arr[] = {1, 2, 3, 4, 5, 6, 7}; printAllArray(arr, sizeof(int), 7, MyPrint); struct Person persons[] = { {"aaa", 10}, {"bbb", 20}, {"ccc", 30}, }; printAllArray(persons, sizeof(struct Person), 3, MyPrintPerson); getchar(); return 0; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看