程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言函數指針的用法

C語言函數指針的用法

編輯:關於C語言

函數指針是一種在C、C++、D語言、其他類 C 語言和Fortran 2003中的指針。函數指針可以像一般函數一樣,用於調用函數、傳遞參數。在如 C 這樣的語言中,通過提供一個簡單的選取、執行函數的方法,函數指針可以簡化代碼。

函數指針只能指向具有特定特征的函數。因而所有被同一指針運用的函數必須具有相同的參數和返回類型。

本文地址:http://www.cnblogs.com/archimedes/p/3669872.html,轉載請注明源地址。

下面的代碼說明了一種初始化函數指針的方法:

 f( (*fp)() = &
= f(= (*pf)(= pf();

以下為函數指針在C中的簡單運用:

#include <stdio.h>

 max( x,  x > y ? main(
     (* p)(, ) = & max; 
    , & a, & b, &= (* p)(( * 

Node* search_list(Node* node,  (node !=(node->value === node->

一種更加通用的方法就是使該函數能用任何類型值的鏈表,必須修改函數,使它與類型無關。解決的方案就是使用函數指針。

#include <stdio.h>*search_list( Node *node,   * (*compare)(   *,   *( node !=( compare( &node->value, value ) == = node->

在特定的鏈表中進行比較的時候,用戶需要編寫適當的比較函數,並把指向該函數的指針和指向需要查找的值的指針傳遞給查找函數,下面是一個整型鏈表中查找的比較函數:

 compare_ints(  *a,   *( *( *)a == *( * 
         
desired_node = search_list(root, &desired_value, compare_ints);

如果你希望在一個字符串鏈表中進行查找,下面的代碼可以完成任務:

#include<.h>= search_list(root, , strcmp);

再看一個完整的例子:

#include<stdio.h>
  object_compare(  * a,  * a->data < z->data ?  :   *maximum(  * begin,  * end, (* compare)(  *,   *  * result =(begin !==++ main(  data[] = {{}, {}, {}, {}, {}, {}, {}, {  *= maximum(data + , data + , &, (* 

2、轉移表

 下面的程序是一個簡化的根據運算符轉到相應運算的例子:

#include<stdio.h>

 _add(,  _sub(,  _mul(,  _div(,  _add( a,  a + _sub( a,  a - _mul( a,  a * _div( a,  a / main(= = , &= (==== 

使用可以使用轉換表來實現相同的任務,轉換表就是一個函數指針數組,代碼如下:

#include<stdio.h>

 _add(,  _sub(,  _mul(,  _div(,  _add( a,  a + _sub( a,  a - _mul( a,  a * _div( a,  a / main(= = , & (*oper_func[])(, ) == 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved