首页
/
每日頭條
/
生活
/
c語言基本概念及函數參考
c語言基本概念及函數參考
更新时间:2025-07-02 10:24:14

函數指針

今天準備和大家講解一下我們C語言編程的函數指針,為什麼函數也需要指針呢?我是這樣理解的函數指針方便我們對函數的調用,當我們需要把一個函數作為參數傳給其他參數的時候就必須使用函數指針才能很好的完成。我希望今天能夠很清楚很詳細地和大家分享一下函數指針這一塊的重點和難點。看完之後你會對函數指針的理解、定義、使用有一個比較全面的認識,廢話不多說我們進入正題。

c語言基本概念及函數參考(函數指針的定義與使用)1

我們先來看下面的代碼:

1 int * fun1 (int *ptr1, int *ptr2);

2 int * *fun2 (int *ptr1, int *ptr2);

3 int *(*fun3)(int *ptr1, int *ptr2);

在這裡定義1、2、3個表達式,首先看到比較複雜的表達式不要慌,不要對它産生畏懼,我們先來一個一個分析。

第1個定義是什麼意思?fun3是我們的函數名字沒什麼問題吧,括号裡面是fun3的參數,類型都是int 行指針,和今天講的沒什麼關系,括号都可以不用看,最後我們看最前面的int * 是什麼意思?那不就是函數的返回值嘛,返回的是一個整型的指針。

第2個定義我們看看和第1個定義有什麼區别?是不是比第1個定義多了一個 * 号那其他和第一個是一樣的呀,隻是返回值是一個指針的指針,是一個二級指針。

第3個定義就是我們今天的重點内容,打起精神了,精彩來啦!如果我們把第3個表達式的(*fun3)看作一個整體的話你發現他和第一表達式 int * fun1 (int *ptr1, int *ptr2);沒有什麼區别了?那它就是返回值為整型指針,參數為兩個整型的指針對吧?好我們現在回過頭來分析(*fun3)是什麼東西,我們先看一個比較好理解的:*ptr 看到沒有?是不是很類似,我們都知道ptr是一個指針對吧,那我們的 *fun3 和它一樣也是一樣指針,然後再看: int *ptr ; ptr是不是變成了一個整型指針?為什麼是整型呢?原來他前面是int類型的對吧都理解那就對了我們來完整地分析第3個定義:

int *(*fun3)(int *ptr1, int *ptr2);

首先我們知道這是一個函數:

函數的返回值:int * 一個整型指針;

函數參數:int *ptr1,int*ptr2 兩個整型指針;

(*fun3)是一指針;

總結:此時fun3不是一個普通的函數名了而是一個指針變量,是一個指向函數的指針;

c語言基本概念及函數參考(函數指針的定義與使用)2

函數指針的用法

#include<string.h> #include<stdlib.h> int * fun(int a ,int b) { if(a>b) printf("a比b大!!\n"); else printf("a比b小!!\n"); } void max(int * (fun1)(int a,int b),int c,int d) { printf("max函數裡面調用的\n"); fun1(c,d); } int main() { int a=10; int b=20; int *(*fun1)(int a, int b); fun1=&fun; printf("fun函數正常調用的\n"); fun(a,b); printf("函數指針調用的\n"); (*fun1)(a,b); max(fun1,a,b); return 0; }

c語言基本概念及函數參考(函數指針的定義與使用)3

代碼和結果分析:

我們可以看一下三種fun函數的調用都成功了第一種的話是普通的調用給她傳參數就可以了,第二個是函數指針的調用把fun的地址賦值給了函數指針fun1,然後調用也沒問題,重點是第三個用法,我們把函數fun當做一個參數傳到了函數max裡面去了,也可以實現對函數fun的調用,這意義太大了,這也是函數指針的魅力所在。為什麼呢?你想想如果我們有很多類似的函數十幾個二十幾個的時候我們怎麼管理和使用,這時候我們可以用函數指針去管理和調用他們,把他們都裝進一個函數指針數組,當然如果你夠強你可以在定義一樣指針指向這個數組。

c語言基本概念及函數參考(函數指針的定義與使用)4

在這裡提一下我們的函數指針數組和函數指針數組指針:

函數指針數組:

int * (*fun[5])(int *p,int *p2)

函數指針數組指針

int * (*(fun)[5])(int *p,int *p2);

後期準寫兩篇專門來介紹這兩種,想在評論區聽一下各位對這兩個知識點的看法總結一下理清楚思路再寫,評論區交給大佬了!

感覺寫的有些廢頭發,不知道你們看完知道什麼是函數指針沒有?

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
整體廚房石英石台面多少錢一米 石英石櫥櫃好還是大理石櫥櫃好
整體廚房石英石台面多少錢一米 石英石櫥櫃好還是大理石櫥櫃好
現在的廚房台面多種多樣,較為常見的台面種類有石英石和大理石,那你知道整體廚房石英石台面多少錢一米,石英石櫥櫃好還是大理石櫥櫃好呢?下面就讓我們一起來了解下石英石櫥櫃和大理石櫥櫃,希望可以幫助更多的人正确選擇廚房台面。整體廚房石英石台面多少錢一米1、整體廚房石英石台面多少錢一米,根據現在的市場價格來看...
2025-07-02
23年結婚紀念日是什麼婚
23年結婚紀念日是什麼婚
23年結婚紀念日是綠玉婚。綠色的玉石玲珑剔透,象征着婚姻中的雙方對彼此知根知底,十分熟悉,也象征着彼此陪伴的難能可貴。在結婚紀念日當天,夫妻雙方可以彼此贈送綠玉,來回憶當初戀愛的美好時光。1、綠玉婚23年結婚紀念日代表的是綠玉婚,用寶石代表婚姻的說法起源于法國,綠色的玉石玲珑剔透,質地堅硬,用來象征...
2025-07-02
如何選購窗簾
如何選購窗簾
如果你家空間足夠大,應該配置一款适宜的窗簾,更能顯示你生活的品位。如何選購窗簾呢?很多用戶不知道怎麼選購,在選購窗簾的時候一定要對窗簾的顔色做好選擇,下面小編為大家介紹如何選購窗簾。如何選購窗簾一、如何選購窗簾——不規則房間窗簾軌道設計善于在不規則房間内利用軌道異型窗在住宅中比較普遍,比如圓弧形的,...
2025-07-02
正月十一請紫姑的寓意  正月十一吃春餅可用功讀書
正月十一請紫姑的寓意  正月十一吃春餅可用功讀書
在每年新年之際,每一天都存在非常多的風俗宜忌值得大家來探究,能夠在其中讨到吉祥的喜頭對于來年的運勢是很有幫助的,那麼在風俗文化當中,正月十一有哪些必須要做的事情呢?請紫姑是什麼傳統儀式?存在的意義是什麼?正月十一請紫姑正月十一要請自古,最早記載“紫姑”的文獻是南朝宋人劉敬叔的《異苑》。大緻說紫姑是人...
2025-07-02
申請非物質文化遺産需要什麼條件
申請非物質文化遺産需要什麼條件
1、具有突出貢獻的曆史、文化和科學價值。2、具有展現廣大人民群衆文化創造力的典型性、代表性。3、具有在一定群體中世代傳承、活态存在的特點。4、具有鮮明特色,在當地有較大影響。申報者須提交以下資料:1、申請報告:對申報項目名稱、申報者、申報目的和意義進行簡要說明。2、項目申報書:對申報項目的曆史、現狀、價值和瀕危狀況等進行說明。3、保護計劃:對未來十年的保護目标、措施、步驟和管理機制等進行說明。4、
2025-07-02
Copyright 2023-2025 - www.tftnews.com All Rights Reserved