1. 程式人生 > >C函式指標妙用,用c語言寫一個簡易類

C函式指標妙用,用c語言寫一個簡易類

其實在C++中的物件也並不是實現起來也並不是多麼的什麼神祕,只是編譯器幫我們做了許多工作,所以我們總覺得C++要比c語言難一些,C++編譯器其實對於類中的非Virtual 函式的的呼叫規則與對C編譯器對函式的呼叫時一樣的,那就是通過call 函式地址的方法。等有時間詳細的寫出來,今天先寫虛擬函式的實現原理:

#include "stdafx.h"
#include<stdio.h>
struct Person
{
   char m_szName[10];
   int (*pEat)(char food[]);
} ;
int EatSteak(char food[])
{
   printf
("%s is so great!!!\n", food); return 0; }; int EatChili(char food[]) { printf("%s is so terrible!!!\n", food); return 0; }; int main(void) { struct Person p ; p.pEat = EatSteak; p.pEat("Beefsteak"); p.pEat = EatChili; p.pEat("Chili "); return 0; }

輸出結果是什麼?自己試一下吧!!!是不是與虛擬函式很像,類的虛擬函式就是這樣一個函式指標,在子類初始化時,將子類的函式地址賦值給這個指標。

相關推薦

C函式指標c語言一個簡易

其實在C++中的物件也並不是實現起來也並不是多麼的什麼神祕,只是編譯器幫我們做了許多工作,所以我們總覺得C++要比c語言難一些,C++編譯器其實對於類中的非Virtual 函式的的呼叫規則與對C編譯器對函式的呼叫時一樣的,那就是通過call 函式地址的方法。等有

C語言一個簡單的三子棋實現玩家與電腦的對戰

原始碼: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <windows.h> #include <time.h> /* 用 C 寫一個三子棋 */ //邏輯: //1. 畫

C/C++高階語法:函式指標及其應用動態連結庫正向呼叫

1、在介紹正向呼叫之前,先講一講動態連結庫的知識:       1)、 動態連結庫 DLL,即Dynamic Link Library,在理解動態連結庫的時候,我們可以把它理解為一個包含變數,函式或是類的集合,我們可以通過一定的方式來呼叫包含在這個集合中的那些變數,函式或是

【轉】嗯讓我們徹底搞懂C/C++函式指標

摘要:這篇文章詳細介紹C/C++的函式指標,請先看以下幾個主題:使用函式指標定義新的型別、使用函式指標作為引數、使用函式指標作為返回值、使用函式指標作為回撥函式、使用函式指標陣列,使用類的靜態函式成員的函式指標、使用類的普通函式成員的指標、定義函式指標陣列型別、

C語言一個好玩的寶石一樣的圖像

循環圖像圖形#include<stdio.h>main(){int n;scanf("%d",&n); for(int i=0;i<n;i++) { for(int j=0;j<n-i-1;j++) { printf(" ")

怎麽C語言一個飛機程序

sge 怎麽 das mob gpl hdd ref dhx cte 5zeffurgal誥退俁稼犢爍厝擋傅鼓《http://weibo.com/p/230927987816857564094464》 wv8kbiqhdd壁溉斡吠戎琴痛鋼匙谷《http://weibo.c

[C#學習筆記1]csc.exe和記事本一個C#應用程序

增加 最終 env 包含 rar cor line 一個 省選 csc.exe是C#的命令行編譯器(CSharpCompiler),可以編譯C#源程序成可執行程序。它與Visual Studio等IDE(Integrated Development Environment,

C++函式指標指標函式、返回值為函式指標函式淺談

C++函式指標、指標函式、返回值為函式指標的函式淺談 引言 函式指標、指標函式是C中重要而容易混淆的概念,博主將通過兩個例項來說明這兩個截然不同的概念。 而返回值為函式指標的指標函式就更難理解了,放在文章的最後來介紹。 函式指標 函式指標是一種特殊的 指標,它指向函式的入口。

如何在不改變函式的情況下函式加上新功能裝飾模式!

        最近專案上碰到一個需求,所有的伺服器與客戶端通訊的協議要加上時間戳的校驗,已防止使用者惡意修改時間。         我的天,現在的協議已經有50多條了,要改好多好多地方啊,有沒有什麼辦法在不改變原先函式的情況下

C++: this指標的用法相關知識點

1. this指標只能在類的成員函式中呼叫,表示當前物件的地址; void data::set_month(int mn) { month = mm; this->month = mn; (*this).month = mn;//三者等價 } 2. this

C++智慧指標:shared_ptruniqe_ptrweak_ptr

動態記憶體 在C++中,動態記憶體的管理是通過一對運算子來完成的:new和delete。 new:在動態記憶體中為物件分配空間,並返回一個指向該物件的指標 delete:接受一個動態物件的指標,銷燬該物件,並釋放與之關聯的記憶體 動態記憶體的使用需要十分小心,因為要在程式設計的時候要

C語言一個簡單的掃雷小遊戲

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <windows.h> #include <time.h> /* 用 C 語言寫一個簡單的掃雷遊戲 */ // 1.寫一個遊戲選單 M

C++ 函式指標及其作用詳解

查了很多資料,對函式指標已瞭解。 函式指標指向某種特定型別,函式的型別由其引數及返回型別共同決定,與函式名無關。舉例如下: int add(int nLeft,int nRight);//函式定義    該函式型別為int(

C++ Primer Plus書之--C++函式指標

  函式指標 使用函式指標, 能完成這樣的工作:可以編寫將另一個函式的地址作為引數的函式, 這樣第一個函式就能找到第二個函式, 並且執行它, 與直接呼叫第一個函式相比, 這種方法很笨拙, 但他允許在不同的時間傳遞不同函式的地址, 這意味著可以再不同的時間使用不同的函式. 基本需

C++函式指標C++11 function 函式物件對比

轉自:https://blog.csdn.net/skillart/article/details/52336303 1.函式指標 函式指標:是指向函式的指標變數,在C編譯時,每一個函式都有一個入口地址,那麼這個指向這個函式的函式指標便指向這個地址。函式指標主要由以下兩方面的用途:呼叫函式和

C++ 函式指標 指向成員函式

//A類與B類的定義 class A { public:   void Test()   {     cout << "A::Test()" << endl;   } }; &

C:函式交換兩個數常見錯誤

                                    函式交換兩個數,常見錯誤 問題:提供倆個數,利用函式實現交換。 出現的錯誤情況如下:         第一種情況:值傳遞;(如函式Swap_err01)         第二種情況:沒解引用;(如

C語言一個掃雷程式

執行環境:win10   vs2013       本程式所有設計思路均已註釋行為標記在程式中,為了方便起見,將不在部落格中進行書寫,想要學的朋友複製下面的原始碼可進行學習,也可將程式進行修改獲取不同的遊戲體驗 程式原始截圖 執行結果:

C++函式指標的使用和好處

1. 簡單使用 #include <iostream> #include <string> using namespace std; void func(string s) {

C/C++函式指標指標函式

前面說的話 面試的時候,經常有面試官問這個問題,在Linux核心裡面也是經常被使用的,在看很多大神的程式碼裡面,我們也經常遇到函式指標與指標函式,一樣,如果你自己沒問題了,就不用往下看了。   定義 我們看個程式碼 int *func(int a,int b)