天天看點

指針【3-1-25】函數指針

指針【3-1-25】函數指針

練習1:函數指針,直接調用和間接調用,用一函數來引用一指針,如何通過一位址調用一函數,最經典的用途是做挂

#define _CRT_SECURE_NO_WARNINGS   //去掉安全檢查

#include<stdio.h>//标準的輸入輸出檔案

#include<stdlib.h>//使用system函數

#include<Windows.h>

#include<time.h>

#include<string.h>

//直接調用的定義你隻有在原代碼裡才能調用,加入我沒有你的原代碼怎麼調用,就要用到間接調用,間接調用就是加入建立一個msg這樣一個函數指針

void msg()

{

//窄字元,需要A

MessageBoxA(0,"你好","出來",0);

}

int add(int a,int b)

{

return a + b;

}

void main2()

{

msg();//直接調用,你隻有在原代碼裡才能調用

printf("%d",add(1,10));//直接調用,如何調用帶傳回值的

//接下來我們分析一下函數指針,函數名就是一記憶體位址

printf("\n%x,%x",msg,add);

//舉例:如何引用msg

//間接調用,函數指針一般用法,如何引用 msg和add

void msg();//有一秘訣,把函數名挖空,輸入(*p),這就是一個函數指針,換成void (*p)();

void(*p)() = msg;//要初始化它,可以讓它,也就是等于msg位址

p();//可以調用它

//舉例:如何引用add

//int add(int a,int b)

//int (*px)(int a,int b)//px防止和上面直接調用裡面的p重名

//printf("%d",px(1,10));

system("pause");

}

繼續閱讀