[C/C++基礎]-函數指標介紹
[C/C++基礎]-函數指標介紹
線上執行:
https://www.tutorialspoint.com/compile_cpp_online.php
●“函數指標”是指向函數的指標變數,因而“函數指標”本身首先應是指標變數。
●只不過該指標變數指向函數。這正如用指標變數可指向整型變數、字元型、陣列一樣,這裏是指向函數。
●如前所述,C/C++在編譯時,每一個函數都有一個進入點位址,該進入點位址就是函數指標所指向的位址。
●有了指向函數的指標變數後,可用該指標變數呼叫函數,就如同用指標變數可引用其他類型變數一樣,在這些概念上一致的。
●函數指標有兩個用途:呼叫函數和做函數的參數。
Code
#include <iostream> using namespace std; void procreation(int,void (*run)(char*,int)); /* 以函數指標為參數 */ void slow_run_shoes(char*,int); void leisure_shoes(char*,int); void spiked_shoes(char*,int); int main() { int procreation_number;/* 生產項目代號1~3 */ int size;/* 尺寸 */ procreation_number=2; size=8; switch(procreation_number) { case 1: procreation(size,slow_run_shoes); /* 參數列中傳入函數slow_run_shoes的位址 */ break; case 2: procreation(size,leisure_shoes); /* 參數列中傳入函數leisure_shoes的位址 */ break; case 3: procreation(size,spiked_shoes); /* 參數列中傳入函數spiked_shoes的位址 */ break; default: cout <<"停止生產!!!" <<endl; } getchar(); return 0; } void procreation(int size,void (*run)(char* material,int size)) { char* material; /* 質料名稱 */ int material_number; /* 質料代號1~3 */ material_number=3; switch(material_number) { case 1: material=(char*)"布"; break; case 2: material=(char*)"獸皮"; break; case 3: material=(char*)"塑膠"; } (*run)(material,size); /* 呼叫函數指標 */ } void slow_run_shoes(char* material,int size) { cout <<"以質料為" <<material <<"、尺寸為" <<size <<"來生產慢跑鞋" <<endl; } void leisure_shoes(char* material,int size) { cout <<"以質料為" <<material <<"、尺寸為" <<size <<"來生產休閒鞋" <<endl; } void spiked_shoes(char* material,int size) { cout <<"以質料為" <<material <<"、尺寸為" <<size <<"來生產釘鞋" <<endl; }
4 thoughts on “[C/C++基礎]-函數指標介紹”
線上執行 上述範例 結果 備份
01. http://codepad.org/nkrZDt8c
02. https://www.tutorialspoint.com/compile_cpp_online.php
PS.
為了要讓 codepad 可執行,就要連 『warning: ISO C++ forbids converting a string constant to ‘char*’』這個問題都解決
解決方法: https://blog.csdn.net/u010029439/article/details/79483329
『
char const *ak =”ffff”;
ak = “hello”;
』
c++ 警告 warning: conversion from string literal to ‘char *’ is deprecated [-Wc
另一種解決方法 將 string 轉成(char*)
Ex: material=(char*)”布”;
C/C++ CallBack Function
函數 指標
回呼函式 C/C++ CallBack