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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Static与函数指针 转

發(fā)布時間:2025/7/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Static与函数指针 转 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

所謂函數(shù)指針就是一個指向函數(shù)的指針,也就是說我們定義一個函數(shù)指針量后,這個變量所在的空間要保存一個函數(shù)的地址。那么函數(shù)指針除了作為回調(diào)函數(shù)的傳參之外還有什么作用呢?這里我們就結(jié)合staitc的作用來探討一下函數(shù)指針是如何作為間諜的。

首先討論一下static的作用,static從本質(zhì)來講就兩個作用:

第一、 限定存儲域:被static修飾的變量無論是局部變量還是全局變量都將被編譯器存放在靜態(tài)區(qū)。而實際上在gcc編譯完生成的ELF格式文件中并沒有靜態(tài)區(qū)這個概念,所謂靜態(tài)區(qū)是我們在概括討論程序數(shù)據(jù)段的一種泛稱。實際上編譯器會根據(jù)具體情況把被static修飾的變量分為兩類:當變量被定義并初始化為非零值的時候,變量將放在.data段;當否則為初始化或初始化為零的時候?qū)⒎旁?bss段。我們在不深入討論的時候暫且可以將此兩段概括為靜態(tài)區(qū)。而放在靜態(tài)區(qū)的變量由于存儲域的原因?qū)е律芷诤荛L,長度為程序(確切講應該是該程序運行后的進程)的一次運行過程,而普通局部變量由于在運行過程中被系統(tǒng)分配在棧區(qū)所以生命周期只是一次函數(shù)的調(diào)用過程。

第二、 限定作用域:由于靜態(tài)還是普通局部變量本身的作用域就是函數(shù)內(nèi)部,因此static的作用域主要是對全局變量和函數(shù)的限定。被staitc修飾的全局變量或函數(shù)都被編譯器標記為僅在本文件中使用,由于編譯器在編譯過程中是以.c結(jié)尾的源文件為單位依次生成以.o結(jié)尾的目標文件,所以最后連接器在連接過程中將不允許被static修飾的變量或函數(shù)的地址對外鏈接。這樣既可以防止全局變量或函數(shù)的重名問題,又可以防止由于無關(guān)的全局變量誤操作引起的程序邏輯問題。因此static就限定了變量或函數(shù)的作用域。

那么被static修飾的函數(shù)就真的只能在本文件中使用了嗎?答案是否定的,由于C語言的精華——指針的強大功能讓我們很輕松的利用函數(shù)指針就可以實現(xiàn)在文件外部調(diào)用被static修飾的函數(shù)。

首先來看一段實驗代碼(詳見圖1):

?
圖1

代碼中編寫了兩個源文件分別為main.c和global_fun.c。

其中main.c中定義了一個被static修飾的函數(shù)int local_fun(void);

global_fun.c中定義了global_fun()函數(shù);

兩個函數(shù)都只打印了一句話說明自己是哪個函數(shù)。由于static的限定作用導致global_fun中想要調(diào)用local_fun函數(shù)是不可能的,編譯器會在連接期間報錯(詳見圖2):

?
圖2

接著修改程序,將global_fun函數(shù)定義為帶有一個參數(shù)為函數(shù)指針的函數(shù),并且在main函數(shù)中定義一個函數(shù)指針p指向被static修飾的靜態(tài)函數(shù)local_fun,接著調(diào)用global_fun函數(shù)并給其傳遞參數(shù)p(詳見圖3):

?
圖3

這時候編譯運行,一切正常(詳見圖4):

?
圖4

總結(jié):指針是C語言的精華所在,指針的靈活實用將使你的開發(fā)工作變得游刃有余事半功倍。因此熟練掌握指針的操作對于一位從事C開發(fā)的程序員來說是不可或缺的基本功。而正因為指針的靈活多變導致我們在使用指針操作數(shù)據(jù)的時候要格外謹慎,一不小心將會導致致命的程序錯誤。但是C語言再強大終究只是一門工具,只要理解操作系統(tǒng)的原理熟悉C語言的規(guī)則然后嚴密謹慎地使用這門工具,那么你將會越發(fā)感受到C編程的樂趣。

原文鏈接:

轉(zhuǎn)載于:https://www.cnblogs.com/GUK0/p/4574551.html

總結(jié)

以上是生活随笔為你收集整理的Static与函数指针 转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色婷婷av一区二区三区软件 | 国产午夜精品一区二区理论影院 | 刘亦菲毛片一区二区三区 | 超碰在线9 | 狠狠干五月天 | 免费a级| 欧美一级片在线看 | 欧美三级a做爰在线观看 | 美女av网站 | 精品欧美一区二区精品少妇 | 日本bdsm视频| 欧美色图11p | 热热色国产 | 人妻少妇偷人精品久久性色 | 欧美色激情 | 风韵丰满熟妇啪啪区老熟熟女 | 国产精品99精品无码视 | 国产永久免费视频 | 99色在线观看 | av一本在线| 国产黄色的视频 | 亚洲va国产va天堂va久久 | 亚欧在线免费观看 | 欧美人与动牲交a欧美精品 欧美三级在线看 | 欧美女人天堂 | 日韩精品极品视频 | 9999视频| 免费国产高清 | 国产欧美精品国产国产专区 | 中文久草 | 亚洲青春草| 亚洲日本影院 | 小辣椒福利视频导航 | 婷婷在线播放 | 精品人妻伦九区久久aaa片 | 亚洲色视频 | 国产精品久久久久毛片大屁完整版 | 欧美日韩在线综合 | 黄片毛片 | 久草免费在线观看视频 | av无毛| 性视频在线播放 | 狠狠干一区 | 午夜电影在线播放 | 精品国产无码一区二区 | 日韩无码专区 | 国产精品久久久久久无人区 | 亚洲午夜小视频 | 午夜青青草 | 日本在线观看一区二区 | av免费观看不卡 | 国产欧美一区二区三区精华液好吗 | 欧美天天射 | 一级片在线观看视频 | 黄色网在线免费观看 | 中文字幕少妇在线三级hd | 国产高潮网站 | av三级网站 | 亚洲成人tv | 尤物在线观看 | 久久免费av | 亚洲精品一二三 | 久久亚洲熟女cc98cm | 久久精品视频网站 | 一区二区三区视频在线观看 | 三级中文字幕 | 哪里可以免费看毛片 | 99久热 | av中文资源在线 | 夜夜爽日日澡人人添 | 亚洲精品乱码久久久久久蜜桃91 | 麻豆一区二区三区在线观看 | 精品久久久久亚洲 | 久久久久久av无码免费看大片 | 爱情岛论坛自拍 | 麻豆免费视频 | 丁香综合网 | 日本高清免费视频 | 日本理伦片午夜理伦片 | 亚洲一区二区三区香蕉 | 国产黄频 | 亚洲射图| 国产丝袜久久 | 亚洲国产97 | 综合网中文字幕 | 国产第56页| 女生扒开尿口给男生捅 | www.久久婷婷 | 99热在线这里只有精品 | 影音先锋蜜桃 | av激情在线观看 | 日韩黄色成人 | 搡老熟女国产 | 精东传媒在线 | 日本视频中文字幕 | 黄色av免费在线观看 | 亚洲欧洲日韩国产 | 日韩美女一级片 | 色亚洲视频 |