日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言指针函数和函数指针区别

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言指针函数和函数指针区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自:https://blog.csdn.net/qq_43710979/article/details/88030147

C語言函數指針和指針函數的區別

C和C++中經常會用到指針,和數據項一樣,函數也是有地址的,函數的地址是存儲其機器語言代碼的內存的開始地址。

指針函數和函數指針經常會混淆,一個是返回指針的函數,另一個是指向函數的指針,下面就分別解釋指針函數和函數指針的區別。

一、指針函數

指針函數是 返回指針的函數 主體是函數,返回值是一個指針
基本聲明形式:返回數據類型 + * + 函數名 + (變量類型1,…);
e.g :

int* fun(int,int); int * fun(int,int); int *fun(int,int);

這三種聲明都可以,第一種更加直觀 返回值是 int* 類型

舉個栗子:

#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; }

輸出結果:2

二、函數指針

函數指針是 指向函數的指針 主體是指針 指向的是一個函數的地址
基本聲明形式:返回數據類型 + (*函數名) + (變量類型1,…);
注意 * 和函數名要用括號括起來,否則因為運算符的優先級原因就變成指針函數了
e.g:

int (*fun) (int); #include<stdio.h> int add(int x,int y) {return x + y; } int (*fun) (int,int);?? ??? ??? ?//聲明函數指針 int main() {fun = &add;?? ??? ??? ??? ??? ?//fun函數指針指向add函數printf("%d ",fun(3,5));?? ??? ?printf("%d",(*fun)(4,2));return 0; }

輸出結果:8 6
上面的樣例中,使用函數指針時使用fun(3,5)(*fun)(3,5)都可以

函數指針的參數列表要和函數指針指向的函數的參數列表一致

主要記住指針函數是返回指針的函數函數指針是指向函數的指針
在這個基礎上可以有函數指針函數和指針函數指針之類的
指針函數聲明的時候 * 和函數名不需要括號括起來
函數指針聲明的時候 * 需要和函數名用括號括起來(優先級原因)
————————————————
版權聲明:本文為CSDN博主「Kria·L」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_43710979/article/details/88030147

以上是函數指針和指針函數的區別,下一篇將講解函數指針數組。

總結

以上是生活随笔為你收集整理的C语言指针函数和函数指针区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。