C语言指针函数和函数指针区别
轉(zhuǎn)載自:https://blog.csdn.net/qq_43710979/article/details/88030147
C語(yǔ)言函數(shù)指針和指針函數(shù)的區(qū)別
C和C++中經(jīng)常會(huì)用到指針,和數(shù)據(jù)項(xiàng)一樣,函數(shù)也是有地址的,函數(shù)的地址是存儲(chǔ)其機(jī)器語(yǔ)言代碼的內(nèi)存的開(kāi)始地址。
指針函數(shù)和函數(shù)指針經(jīng)常會(huì)混淆,一個(gè)是返回指針的函數(shù),另一個(gè)是指向函數(shù)的指針,下面就分別解釋指針函數(shù)和函數(shù)指針的區(qū)別。
一、指針函數(shù)
指針函數(shù)是 返回指針的函數(shù) 主體是函數(shù),返回值是一個(gè)指針
基本聲明形式:返回?cái)?shù)據(jù)類型 + * + 函數(shù)名 + (變量類型1,…);
e.g :
這三種聲明都可以,第一種更加直觀 返回值是 int* 類型
舉個(gè)栗子:
#include<stdio.h> int* fun(int* x) ? ?//傳入指針 ? {int* tmp = x;?? ? ?//指針tmp指向xreturn tmp; ? ? ? //返回tmp指向的地址 } int main() {int b = 2; ? ? ?int* p = &b; ? //p指向b的地址printf("%d",*fun(p));//輸出p指向的地址的值return 0; }輸出結(jié)果:2
二、函數(shù)指針
函數(shù)指針是 指向函數(shù)的指針 主體是指針 指向的是一個(gè)函數(shù)的地址
基本聲明形式:返回?cái)?shù)據(jù)類型 + (*函數(shù)名) + (變量類型1,…);
注意 * 和函數(shù)名要用括號(hào)括起來(lái),否則因?yàn)檫\(yùn)算符的優(yōu)先級(jí)原因就變成指針函數(shù)了
e.g:
輸出結(jié)果:8 6
上面的樣例中,使用函數(shù)指針時(shí)使用fun(3,5)和(*fun)(3,5)都可以
函數(shù)指針的參數(shù)列表要和函數(shù)指針指向的函數(shù)的參數(shù)列表一致
主要記住指針函數(shù)是返回指針的函數(shù)而函數(shù)指針是指向函數(shù)的指針
在這個(gè)基礎(chǔ)上可以有函數(shù)指針函數(shù)和指針函數(shù)指針之類的
指針函數(shù)聲明的時(shí)候 * 和函數(shù)名不需要括號(hào)括起來(lái)
函數(shù)指針聲明的時(shí)候 * 需要和函數(shù)名用括號(hào)括起來(lái)(優(yōu)先級(jí)原因)
————————————————
版權(quán)聲明:本文為CSDN博主「Kria·L」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_43710979/article/details/88030147
以上是函數(shù)指針和指針函數(shù)的區(qū)別,下一篇將講解函數(shù)指針數(shù)組。
總結(jié)
以上是生活随笔為你收集整理的C语言指针函数和函数指针区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MFC获取电脑硬盘序列号(附源码)
- 下一篇: 小子注入,怎么使用呢?