日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

函数与指针分析

發布時間:2025/4/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数与指针分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1 函數類型
      • 1.1 函數類型的定義
    • 2 函數指針
      • 2.1 函數指針的定義
      • 2.2 函數指針的使用
      • 2.3 回調函數

1 函數類型

1.1 函數類型的定義

函數類型:

  • C語言中的函數有自己特定的類型。
  • 函數的類型由返回值、參數類型和參數個數共同決定:int add(int i, int j)的類型為int(int, int)。
  • C語言中通過typedef為函數類型重命名:typedef type name(parameter list):
    • typedef int f(int, int);
    • typedef void p(int);

2 函數指針

2.1 函數指針的定義

關于函數指針:

  • 函數指針用于指向一個函數。
  • 函數名是執行函數體的入口地址。
  • 可通過函數類型定義函數指針:FuncType* pointer;。
  • 也可以直接定義:type(*pointer)(parameter list);
    • pointer為函數指針變量名。
    • type為所指函數的返回值類型。
    • parameter list為所指函數的參數類型列表。

我們可以通過函數指針直接跳轉到某個固定的地址開始執行。

2.2 函數指針的使用

/* 函數指針的定義 把函數聲明移過來,把函數名改成 (* 函數指針名) */ int (*fp)(const void *, const void *);/*貝爾實驗室的C和UNIX的開發者采用第1種形式,而伯克利的UNIX推廣者卻采用第2種形式,ANSI C 兼容了兩種方式*/ fp = &compare_int; // fp = compare_int;也是一樣的/* 第1種,按普通指針解引的放式進行調用,(*fp)等同于compare_int */ (*fp)(&x, &y); /* 第2種,直接調用 */fp(&x, &y);

2.3 回調函數

回調函數的概念:

  • 回調函數是利用函數指針實現的一種調用機制。
  • 回調機制原理:
    • 調用者不知道具體事件發生時需要調用的具體函數。
    • 被調函數不知道何時被調用,只知道需要完成的任務。
    • 當具體事件發生時,調用者通過函數指針調用具體函數。
  • 回調機制中的調用者和被調函數互不依賴。

回調函數使用示例:

#include <stdio.h>typedef int(*Weapon)(int);void fight(Weapon wp, int arg) {int result = 0;printf("Fight boss!\n");result = wp(arg);printf("Boss loss: %d\n", result); }int knife(int n) {int ret = 0;int i = 0;for(i=0; i<n; i++){printf("Knife attack: %d\n", 1);ret++;}return ret; }int sword(int n) {int ret = 0;int i = 0;for(i=0; i<n; i++){printf("Sword attack: %d\n", 5);ret += 5;}return ret; }int gun(int n) {int ret = 0;int i = 0;for(i=0; i<n; i++){printf("Gun attack: %d\n", 10);ret += 10;}return ret; }int main() {fight(knife, 3);fight(sword, 4);fight(gun, 5);return 0; }

參考資料:

  • C語言進階剖析教程
  • 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的函数与指针分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。