layout: post
title: 函數(shù)指針和函數(shù)引用
categories: C/C++
description: 函數(shù)指針和函數(shù)引用
keywords:
url: https://lichao890427.github.io/ https://github.com/lichao890427/
簡介
??無論任何書都會有這段內(nèi)容:
指針和引用是雙胞胎没炒,前者是C而后者是C++的,兩者底層實(shí)現(xiàn)完全一樣(曾有一本很nb的書讓我放棄這個(gè)看法)珠叔,事實(shí)上也不可能不一樣瞎抛,引用的話必須綁定當(dāng)前已存在的值或?qū)ο箝苊耍x時(shí)就要以該值或?qū)ο蟪跏蓟萃叮蟮男薷木醋鰧υ祷驅(qū)ο蟮牟僮鳌:瘮?shù)指針你是知道的沟涨,他就是指向函數(shù)的指針恤批,那函數(shù)引用呢?現(xiàn)在我提出函數(shù)引用這個(gè)定義裹赴,定義為必須用函數(shù)初始化的函數(shù)變量來對比一下喜庞,看此例:
#include "stdio.h"
//聲明類型
typedef int (&MYGETCHAR1)(void);//函數(shù)指針形式1
typedef int (*MYGETCHAR2)(void);//函數(shù)引用形式2
int main(int argc, char* argv[])
{
MYGETCHAR1 c=getchar;
MYGETCHAR2 d=getchar;
//定義變量
int (*func0)(void)=getchar;//函數(shù)指針形式2
int (&fund0)(void)=getchar;//函數(shù)引用形式2
int (*func1)(void)=NULL;//正確
int (&fund1)(void)=NULL;//編譯錯誤
int (*func2)(void)=NULL;//正確
int (&fund2)(void)=NULL;//編譯錯誤
return 0;
}
??代碼中MYGETCHAR1是函數(shù)引用而MYGETCHAR2是函數(shù)指針,和函數(shù)指針一樣篮昧,引用指針也有2種形式赋荆。同樣,函數(shù)引用也必須初始化