通過函式指標呼叫函式
說明:
指標可以不但可以指向一個整形,浮點型,字元型,字串型的變數,也可以指向相應的陣列,而且還可以指向一個函式。
一個函式在編譯的時候會被分配給一個入口地址。這個函式入口地址稱為函式的指標。可以用一個指標變數指向函式,然後通過該指標變數呼叫此函式。
定義指向函式的指標變數的方法是:
int (*p) (int ,int );
int【指標變數p指向的函式的型別】 (*p)【p是指向函式的指標變數】 ( int,int )【p所指向的形參型別】;
與函式的原型進行比較
int max (int, int );
int【函式的型別】 max【函式名】 ( int,int )【函式的形參型別】;
一個例子:
一般方法的程式碼:
#include<iostream> using namespace std; int main(){ int max(int x,int y); int a,b,c,m; cout<<"Please input three integers:"<<endl; cin>>a>>b>>c; m=max(max(a,b),c); cout<<"Max="<<m<<endl; return 0; } int max(int x,int y){ int z; if(x>y){ z=x; } else{ z=y; } return z; }
然後,我們定義一個指標變數,指向max函式,然後通過該指標變數呼叫函式。
通過(*p)來呼叫函式
#include<iostream> using namespace std; int main(){ int max(int x,int y); int (*p) (int x,int y); p=max; int a,b,c,m; cout<<"Please input three integers:"<<endl; cin>>a>>b>>c; m=(*p)((*p)(a,b),c); cout<<"Max="<<m<<endl; return 0; } int max(int x,int y){ int z; if(x>y){ z=x; } else{ z=y; } return z; }
可以通過指標p直接呼叫函式
#include<iostream>
using namespace std;
int main(){
int max(int x,int y);
int (*p) (int x,int y);
p=max;
int a,b,c,m;
cout<<"Please input three integers:"<<endl;
cin>>a>>b>>c;
m=p(p(a,b),c);
cout<<"Max="<<m<<endl;
return 0;
}
int max(int x,int y){
int z;
if(x>y){
z=x;
} else{
z=y;
}
return z;
}
用指向函式的指標作為函式的引數
函式指標變數最常見的用途之一是作為函式的引數,將函式名傳遞給其他函式的形參。這樣那個就可以在呼叫一個函式的過程中,根據給定的不同的實參,呼叫不同的函式。
例如,利用該方法解決,兩個函式y1=(x+1)^1; y2=(2x+3)^2 ; y3=(x^2+1)^3
分析:編寫3個函式f1,f2,f3,用來求上面3個函式x+1,2x+3,x^2+1的值。
然後編寫一個通用函式Squar,他有兩個形參:a次方和指向函式、
程式程式碼:
#include<iostream>
#include<math.h>
using namespace std;
double fun1(double n){
double r;
r=n+1;
return r;
}
double fun2(double n){
double r;
r=2*n+3;
return r;
}
double fun3(double n){
double r;
r=(pow(n,2)+1);
return r;
}
double Squar(int a, double x, double(*p)(double )){
double r,z;
z=(*p)(x);
r=pow(z,a);
return r;
}
int main(){
double fun1(double n);
double fun2(double n);
double fun3(double n);
double Squar(int a, double x, double(*p)(double ));
double x;
cout<<"Please input x:";
cin>>x;
cout<<"(x+1)^1=";
cout<<Squar(1,x,fun1)<<endl;
cout<<"(2x+3)^2=";
cout<<Squar(2,x,fun2)<<endl;
cout<<"(x^2+1)^3=";
cout<<Squar(3,x,fun3)<<endl;
cout<<endl;
return 0;
}
相關推薦
通過函式指標呼叫函式
說明: 指標可以不但可以指向一個整形,浮點型,字元型,字串型的變數,也可以指向相應的陣列,而且還可以指向一個函式。 一個函式在編譯的時候會被分配給一個入口地址。這個函式入口地址稱為函式的指標。可以用一個指標變數指向函式,然後通過該指標變數呼叫此函式。 定義指向函式的指標變數
函式指標呼叫函式
#include<iostream> using namespace std; void site1() { cout<<
C語言 函式指標呼叫時加星號與不加星號?
函式指標在賦值以後,例如通過庫動態載入方式,然後在使用時,程式呼叫遇到了既加星號,也有不加星號的方式,因此有點疑惑。 先上例項,再作分析 #include <stdio.h> void myfun(void); int main(void) { void (*pf)(void); p
c++中使用指標呼叫函式和使用指標呼叫類物件的()過載函式
使用函式指標時,指標可以像函式名一樣,直接加括號和引數列表呼叫;也可先解引用再呼叫 //include directories... using namespace std; void testFun() { cout<<"this is
函式指標系列:用函式指標呼叫執行函式
函式指標的定義 若在程式中定義了一個函式,在程式編譯的時候,編譯系統會給這段函式程式碼分配一段記憶體空間,這段記憶體空間的起始地址稱為這個函式的指標(函式名實質就是函式這段程式碼的起始地址)。 定義和使用指向函式的指標變數 定義指向函式的指標變數的一般
[C++]C++ 函式指標 實現 函式名字串 到 函式呼叫 cmath.h
程式碼功能 從命令列讀取格式為 函式名 數值 的輸入,例如: log10 1000 在命令列輸出呼叫對應函式名的函式計算結果,例如: log10(1000) = 3 完整原始碼 //
C++ 空指標呼叫函式 靜態繫結
首先看一段程式碼是否知道其正確還是錯誤。 class A{ public:void print(){cout << "Hello" << endl;} }; void main() {A *a = NULL;a.print(); } 問你程式是否正確
[C]通過函式指標得到函式名
出處:http://stackoverflow.com/questions/351134/how-to-get-functions-name-from-functions-pointer-in-c可以使用 backtrace(), backtrace_symbol(),根據
指標函式 AND 函式指標 AND 函式指標陣列 AND 指向函式指標陣列的指標
指標函式 形如“指標陣列”,“指標函式”是一個“函式”,函式的返回型別是指標。 定義 型別識別符號 *函式名(引數表) char *reverse(char *left, char *right); reverse是一個函式,它的返回型別是一個字元
函式指標和函式指標型別
參考:https://blog.csdn.net/candyliuxj/article/details/6339414 函式指標 1. 定義 每一個函式都佔用一段記憶體單元,它們有一個起始地址,指向函式入口地址的指標稱為函式指標。
C++函式指標、指標函式、返回值為函式指標的函式淺談
C++函式指標、指標函式、返回值為函式指標的函式淺談 引言 函式指標、指標函式是C中重要而容易混淆的概念,博主將通過兩個例項來說明這兩個截然不同的概念。 而返回值為函式指標的指標函式就更難理解了,放在文章的最後來介紹。 函式指標 函式指標是一種特殊的 指標,它指向函式的入口。
函式(定義函式,呼叫函式)
一,定義函式 1.定義函式的內容 (1)指定函式的名字,以便以後按名呼叫 (2)指定函式的型別,即函式返回值的型別 (3)指定函式的引數的名字和型別,以便在呼叫函式時向它們傳遞資料。對無參函式不需要這項。 (4)指定函式的功能。在函式體中解決。 2.定義無參函式 例:void print_s
函式指標與函式物件
今天看c++中vector資料結構的底層實現,發現遍歷操作的實現之一用到了函式物件,花時間又複習了一下函式指標和函式物件。 函式指標:是指向函式的指標變數,在C編譯時,每一個函式都有一個入口地址,那麼這個指向這個函式的函式指標便指向這個地址。 函式指標的用途是很大的
函式指標,函式指標陣列的學習
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> //函式指標的學習 //11_4_1 //11_4-2 //void test() //{ // printf(“hehe\n”); //} //
JavaScript中的引用函式、呼叫函式和回撥函式
引用函式與呼叫函式的區別 引用函式與呼叫函式的差別與函式名稱後是否附有括號()有關。函式引用只會單獨出現,但函式呼叫則必定後隨括號,很多時候還附有自變數。 舉個例子 // 函式引用 程式碼一 function f(){ var x = 5; retu
【matlab】:matlab如何寫函式並且呼叫函式?
寫部落格就是為了乾貨 ——老羅如是說 matlab如何寫函式? 1,點選new M-fil
函式指標及函式指標陣列的妙用
如果按照這種方法寫下去,那麼在我的每一個函式裡面,都必須作如此多的判斷,寫出的程式碼肯定很長,並且每一次處理,都要作許多次判斷之後才找到正確的處理函式,程式碼的執行效率也不高。針對上述問題,我想到了用函式指標陣列的方法解決這個問題。 函式指標的概念,在潭浩強先生的C語言程式設計這本經典的教程中提及過,在大
函式指標作為函式引數及函式作為函式引數
轉載於:http://blog.csdn.net/vlily/article/details/7244682 轉載於:http://blog.csdn.net/shengnan_wu/article/details/8116935 轉載於:http://blog.csdn.net/callm
C++ 靜態成員函式 訪問 類成員變數 & 函式指標、函式指標陣列、函式指標陣列指標的使用 & 回撥函式的使用
靜態成員函式可以通過引用類物件訪問類成員變數;test.h#ifndef TEST_H #define TEST_H class Test { public: Test(); Tes
指標陣列、陣列指標、函式指標、函式指標陣列詳解
總結指標和陣列部分的相關知識自己寫的一遍部落格:指標是變數單元的地址,地址指向該變數單元,因此地址形象的稱為“指標”,通過指標(地址)可以找到記憶體單元。 (總結)1.指標是存放地址才出現的,地址是為