自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

幾分鐘教您玩轉(zhuǎn)C++中函數(shù)指針

開發(fā) 后端
本文詳細介紹C++函數(shù)指針相關問題,函數(shù)名可以通過函數(shù)指針加以保存,也可以自定義若干個函數(shù)名,這就是函數(shù)指針數(shù)組。

所謂的C++函數(shù)指針,函數(shù)指針是指向函數(shù)的指針變量函數(shù)指針有兩個用途:調(diào)用函數(shù)和做函數(shù)的參數(shù),下面詳細解讀C++函數(shù)指針的說明方法。

由第一個字節(jié)(buffer[0])標識該數(shù)據(jù)的類型,共有256(28 )種可能性。我的任務是必須對每一種可能出現(xiàn)的數(shù)據(jù)類型都要作處理,并且我的模塊包含若干個函數(shù),在每個函數(shù)里面都要作類似的處理。若按通常做法,會寫出如下代碼:

  1. void MyFuntion( char* buffer, int length )  
  2. {  
  3.     __int8 nStreamType = buffer[0];  
  4.  
  5.     switch( nStreamType )  
  6.     {  
  7.        case 0:  
  8.  
  9.            function1();  
  10.  
  11.            break;  
  12.  
  13.        case 1:  
  14.  
  15.        ......  
  16.  
  17.        case 255:  
  18.  
  19.            function255();  
  20.  
  21.            break;  
  22.  
  23.      }  
  24.  

如果按照這種方法寫下去,那么在我的每一個函數(shù)里面,都必須作如此多的判斷,寫出的代碼肯定很長,并且每一次處理,都要作許多次判斷之后才找到正確的處理函數(shù),代碼的執(zhí)行效率也不高。針對上述問題,我想到了用C++函數(shù)指針數(shù)組的方法解決這個問題。

函數(shù)指針的概念,在潭浩強先生的C++語言程序設計這本經(jīng)典的教程中提及過,在大多數(shù)情況下我們使用不到,也忽略了它的存在。函數(shù)名實際上也是一種指針,指向函數(shù)的入口地址,但它又不同于普通的如int*、double*指針,看下面的例子來理解C++函數(shù)指針的概念:

  1. 1 int funtion( int x, int y );  
  2. 2 void main ( void )   
  3.  {  
  4. 3    int (*fun) ( int x, int y );  
  5. 4    int a = 10b = 20;  
  6. 5    function( a, b );  
  7. 6    fun = function;  
  8. 7   ?。?fun)( a, b );  
  9. 8     ……  
  10.   } 

語句1定義了一個函數(shù)function,其輸入為兩個整型數(shù),返回也為一個整型數(shù)(輸入?yún)?shù)和返回值可為其它任何數(shù)據(jù)類型);語句3定義了一個函數(shù)指針,與int*或double*定義指針不同的是,C++函數(shù)指針的定義必須同時指出輸入?yún)?shù),表明這是一個函數(shù)指針,并且*fun也必須用一對括號括起來;

【編輯推薦】

  1. 簡介學習C++總結之談
  2. 對C++庫函數(shù)進行學習探索總結筆記
  3. C++類庫設計的基本構思與方法
  4. C++語言真的還有市場價值?
  5. C++類庫設計的基本構思與方法
責任編輯:chenqingxiang 來源: wewill.cn
相關推薦

2010-01-21 09:46:24

C++程序

2010-01-06 13:39:51

擴展Jquery的Js

2010-01-12 10:28:58

C++復雜性

2010-03-10 13:55:35

交換機故障

2010-01-12 18:20:31

Visual C++

2010-02-23 14:19:30

Python目錄操作

2010-03-01 18:13:22

Python程序

2010-01-26 14:53:43

C++

2009-12-21 13:51:54

ADO.NET處理

2010-03-04 10:01:01

Android基本組件

2013-07-02 09:58:38

ClojureClojure教程

2016-09-30 15:13:01

Python代碼

2010-01-20 10:40:44

C++Test

2009-12-29 09:01:46

ADSL斷線

2010-01-06 15:35:06

JSON對象

2024-12-03 15:38:14

2010-01-27 09:46:32

C++Builder開

2009-11-25 17:22:12

路由器安裝

2017-08-03 17:30:26

戴爾IoT設備

2024-04-19 09:37:49

Ollama大語言模型開源
點贊
收藏

51CTO技術棧公眾號