日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

指針變量可以指向任何類型的數據,也可以指向一個函數。每個函數在內存中都占用一段存儲單元,這段存儲單元的首地址稱為函數的入口地址,指向這個函數入口地址的指針稱為函數指針。

1、函數指針基本用法:

int max(int a, int b)
{
 return a > b ? a : b;
}
int (*p) (int , int) = max;
int x = 20, y = 30;
int z = p(x, y);

首先定義了一個max函數,函數接受兩個int類型的參數并返回其中的最大值。

int (*p) (int , int) = max;

這行代碼中定義了一個函數指針p,在定義函數指針時必須指明函數指針所指向函數的返回值和參數列表。代碼中的函數指針p所指向的函數的返回值為int類型,參數列表為兩個int類型的參數,這與max函數的返回值和參數列表一致,因此可以用函數max初始化函數指針p。

注:函數名等價于函數的入口地址

2、函數指針的定義和初始化

  • 括號不能少

在定義時 * p 必須用括號括起來,如果去掉括號代碼變為

int *p (int, int) // p 是函數而非指針

上面代碼中的p不是一個函數指針,而是一個函數名。代碼聲明了一個函數p,函數返回值類型為int* 類型,并且包括兩個int類型的參數。

  • 在對函數指針初始化或者賦值的過程中,一定要保證函數的參數個數和類型與函數指針的定義相匹配。

3、函數指針實現簡單的四則運算

代碼如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int add(int a, int b)
{
 return a + b;
}

int minus(int a, int b)
{
 return a - b;
}

int multi(int a, int b)
{
 return a * b;
}

int divide(int a, int b)
{
 return a / b;
}

int calculator(int a, int b, int(*Func)(int, int))
{
 return Func(a, b);
}

int main()
{
 int a = 40, b = 20;

 int res1 = calculator(a, b, add);
 printf("a + b = %d
", res1);

 int res2 = calculator(a, b, minus);
 printf("a - b = %d
", res2);

 int res3 = calculator(a, b, multi);
 printf("a * b = %d
", res3);

 int res4 = calculator(a, b, divide);
 printf("a / b = %d
", res4);

 system("pause");
 return 0;
}

運行結果:

C/C++中的函數指針

 

4、typedef關鍵字的用法

使用typedef關鍵字對函數指針類型重定義,并在定義函數指針時使用通過typedef重定義后的類型名。

typedef int (*pFunc) (int, int);
int calculator( int a, int b, pFunc func );

分享到:
標簽:語言
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定