0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語(yǔ)言中函數(shù)的返回值指向一個(gè)指針

云深之無(wú)跡 ? 來(lái)源:云深之無(wú)跡 ? 2023-04-26 11:01 ? 次閱讀

函數(shù)的返回值類型必須與函數(shù)體內(nèi)的返回表達(dá)式的類型相匹配。如果類型不匹配,編譯器會(huì)報(bào)錯(cuò)。此外,C 語(yǔ)言中的函數(shù)只能返回一個(gè)值,如果需要返回多個(gè)值,可以使用結(jié)構(gòu)體或指針等方式來(lái)實(shí)現(xiàn)。

f3b55492-e351-11ed-ab56-dac502259ad0.png

返回一個(gè)結(jié)構(gòu)體類型的值并將其存儲(chǔ)到一個(gè)結(jié)構(gòu)體類型的變量中。add() 函數(shù)接收兩個(gè) Point 類型的參數(shù),并返回一個(gè) Point 類型的值。在函數(shù)體內(nèi),將兩個(gè)參數(shù)的 x 坐標(biāo)和 y 坐標(biāo)分別相加,得到一個(gè)新的 Point 類型的結(jié)構(gòu)體,然后將這個(gè)結(jié)構(gòu)體作為函數(shù)的返回值返回。在 main() 函數(shù)中,創(chuàng)建兩個(gè) Point 類型的結(jié)構(gòu)體 p1 和 p2,并將它們傳遞給 add() 函數(shù)。然后,使用一個(gè) Point 類型的變量 p3 來(lái)存儲(chǔ) add() 函數(shù)的返回值,并打印出 p3 的坐標(biāo)。

f3d8c29c-e351-11ed-ab56-dac502259ad0.png

create_array() 函數(shù)接收一個(gè)整數(shù) n,然后動(dòng)態(tài)分配了一個(gè) n 個(gè)元素的整型數(shù)組,將數(shù)組中的每個(gè)元素初始化為其下標(biāo)值,最后將指向數(shù)組的指針作為函數(shù)的返回值返回。在 main() 函數(shù)中,調(diào)用 create_array() 函數(shù)并將其返回值指向一個(gè)整型指針 arr。然后,使用一個(gè)循環(huán)遍歷數(shù)組的每個(gè)元素,并打印出其值。最后,釋放數(shù)組所占用的內(nèi)存空間。

在 C 語(yǔ)言中,回調(diào)函數(shù)是指一個(gè)函數(shù)指針,它作為參數(shù)傳遞給另一個(gè)函數(shù),使得被調(diào)用的函數(shù)可以調(diào)用傳遞進(jìn)來(lái)的函數(shù)指針來(lái)完成一些特定的操作。通常情況下,回調(diào)函數(shù)可以用于事件處理、信號(hào)處理、異步操作等方面。

f3f1da2a-e351-11ed-ab56-dac502259ad0.png

定義了一個(gè)函數(shù)指針類型 callback,它指向一個(gè)沒(méi)有返回值,帶有一個(gè)整型參數(shù)的函數(shù)。

然后,定義了一個(gè)名為 apply() 的函數(shù),它接收一個(gè)整型數(shù)組 arr,數(shù)組的長(zhǎng)度 n,以及一個(gè)函數(shù)指針 cb。在函數(shù)體內(nèi),使用一個(gè)循環(huán)遍歷數(shù)組中的每個(gè)元素,并調(diào)用傳遞進(jìn)來(lái)的函數(shù)指針 cb 來(lái)處理每個(gè)元素。

在 main() 函數(shù)中,定義了一個(gè)整型數(shù)組 arr,并調(diào)用 apply() 函數(shù)來(lái)處理數(shù)組中的每個(gè)元素。在調(diào)用 apply() 函數(shù)時(shí),將一個(gè)名為 print() 的函數(shù)指針作為參數(shù)傳遞給它,這個(gè)函數(shù)會(huì)將整型參數(shù)打印到標(biāo)準(zhǔn)輸出中。

apply()函數(shù)是一個(gè)通用的函數(shù),它可以接收任意類型的數(shù)組和任意類型的函數(shù)指針。通過(guò)傳遞不同的函數(shù)指針,可以實(shí)現(xiàn)不同的操作。這種方式使得代碼的復(fù)用性更好,并且使得代碼更加靈活。

函數(shù)指針是指一個(gè)指向函數(shù)的指針變量,它存儲(chǔ)了函數(shù)的地址,可以用來(lái)調(diào)用函數(shù)。函數(shù)指針的定義方式與普通的指針定義方式相似,只是需要在指針類型前面加上函數(shù)的返回類型和參數(shù)列表。

int(*p)(int,int);

定義了一個(gè)名為 p 的指向函數(shù)的指針變量,這個(gè)函數(shù)返回值類型是 int,有兩個(gè)整型參數(shù)。這個(gè)函數(shù)指針可以指向一個(gè)具有相同返回值類型和參數(shù)列表的函數(shù)。

f414f08c-e351-11ed-ab56-dac502259ad0.png

打完收工

定義了兩個(gè)函數(shù) add() 和 subtract(),分別實(shí)現(xiàn)了加法和減法操作。然后,定義了一個(gè)名為 p 的函數(shù)指針,它可以指向一個(gè)帶有兩個(gè)整型參數(shù)并返回整型的函數(shù)。在 main() 函數(shù)中,將 p 指向 add() 函數(shù),并調(diào)用它來(lái)完成加法操作,然后再將 p 指向 subtract() 函數(shù),并調(diào)用它來(lái)完成減法操作。

函數(shù)里面的參數(shù)可以傳遞一個(gè)指針進(jìn)來(lái)。指針作為參數(shù)傳遞進(jìn)函數(shù)時(shí),實(shí)際上傳遞的是指針?biāo)赶虻膬?nèi)存地址,函數(shù)可以通過(guò)指針來(lái)訪問(wèn)、修改指針?biāo)赶虻膬?nèi)存中的數(shù)據(jù)。

f42f6f20-e351-11ed-ab56-dac502259ad0.png

定義了一個(gè)名為 swap() 的函數(shù),它有兩個(gè)參數(shù),都是指向整型變量的指針。在 main() 函數(shù)中,定義了兩個(gè)整型變量 x 和 y,并輸出它們的初始值。然后,將 x 和 y 的地址傳遞給 swap() 函數(shù),讓它交換這兩個(gè)變量的值。最后,再次輸出 x 和 y 的值,發(fā)現(xiàn)它們的值已經(jīng)被成功交換了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134026
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4235

    瀏覽量

    61965
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    475

    瀏覽量

    70457
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1602

    瀏覽量

    48895

原文標(biāo)題:函數(shù)的返回值指向一個(gè)指針

文章出處:【微信號(hào):TT1827652464,微信公眾號(hào):云深之無(wú)跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言指針詳細(xì)解析

    可以對(duì)數(shù)據(jù)本身,也可以對(duì)存儲(chǔ)數(shù)據(jù)的變量地址進(jìn)行操作。 指針個(gè)占據(jù)存儲(chǔ)空間的實(shí)體在這段空間起始位置的相對(duì)距離。在
    發(fā)表于 09-14 10:03

    面試???1:函數(shù)指針指針函數(shù)、數(shù)組指針指針數(shù)組

    函數(shù)是指返回值指針函數(shù)。語(yǔ)法:返回值類型*函數(shù)名(參數(shù)列表)。示例代碼:#include#i
    的頭像 發(fā)表于 08-10 08:11 ?311次閱讀
    面試常考+1:<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>與<b class='flag-5'>指針</b><b class='flag-5'>函數(shù)</b>、數(shù)組<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>數(shù)組

    函數(shù)指針與回調(diào)函數(shù)的應(yīng)用實(shí)例

    通常我們說(shuō)的指針變量是指向個(gè)整型、字符型或數(shù)組等變量,而函數(shù)指針
    的頭像 發(fā)表于 03-07 11:13 ?314次閱讀
    <b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>與回調(diào)<b class='flag-5'>函數(shù)</b>的應(yīng)用實(shí)例

    函數(shù)指針指針函數(shù)是不是個(gè)東西?

    函數(shù)指針的本質(zhì)是指針,就跟整型指針、字符指針樣,函數(shù)
    的頭像 發(fā)表于 01-03 16:35 ?428次閱讀
    <b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>和<b class='flag-5'>指針</b><b class='flag-5'>函數(shù)</b>是不是<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>東西?

    如何給C語(yǔ)言中函數(shù)定義兩個(gè)不同的名字?

    最近有位哥問(wèn)我,如何給C語(yǔ)言中函數(shù)定義兩個(gè)不同的名字?就是這兩個(gè)名字都是指向
    的頭像 發(fā)表于 12-19 16:21 ?560次閱讀

    c語(yǔ)言源程序的基本單位

    C語(yǔ)言源程序的基本單位是函數(shù)。函數(shù)組有關(guān)聯(lián)的語(yǔ)句和表達(dá)式的集合,它們起完成特定的任務(wù)。在
    的頭像 發(fā)表于 11-26 09:05 ?1589次閱讀

    scanf在C語(yǔ)言中的作用

    scanf在C語(yǔ)言中的作用? scanf是C語(yǔ)言中的輸入函數(shù),用于從標(biāo)準(zhǔn)輸入設(shè)備(如鍵盤(pán))讀取數(shù)據(jù),并將其存儲(chǔ)到變量中。它是
    的頭像 發(fā)表于 11-23 14:13 ?978次閱讀

    c語(yǔ)言max函數(shù)的使用方法

    C語(yǔ)言門(mén)廣泛使用的編程語(yǔ)言,提供了許多內(nèi)置的函數(shù)來(lái)執(zhí)行各種任務(wù)。其中
    的頭像 發(fā)表于 11-22 10:15 ?8947次閱讀

    python函數(shù)返回多個(gè)參數(shù)

    函數(shù)是程序設(shè)計(jì)中的個(gè)重要概念,在很多編程語(yǔ)言中都存在。函數(shù)可以接受輸入數(shù)據(jù),并且根據(jù)輸入數(shù)據(jù)進(jìn)行
    的頭像 發(fā)表于 11-21 16:37 ?928次閱讀

    tuple函數(shù)怎么返回多個(gè)

    在編程領(lǐng)域中,函數(shù)是非常重要的構(gòu)建模塊,它能夠接受輸入?yún)?shù)并執(zhí)行特定的計(jì)算,最終返回結(jié)果供程序使用。常規(guī)的函數(shù)只能返回
    的頭像 發(fā)表于 11-21 16:33 ?546次閱讀

    C語(yǔ)言函數(shù)返回1和返回0究竟哪個(gè)好?

    C語(yǔ)言函數(shù)返回1和返回0究竟哪個(gè)好? 在C語(yǔ)言中,很
    的頭像 發(fā)表于 10-31 14:43 ?793次閱讀

    C語(yǔ)言中數(shù)字怎么轉(zhuǎn)成指針?

    C語(yǔ)言中數(shù)字怎么轉(zhuǎn)成指針,比如我要去內(nèi)存地址為0x100的內(nèi)容,用句話表達(dá),不如uchar a=?我要問(wèn)號(hào)等于0x100地址的內(nèi)容
    發(fā)表于 10-31 06:29

    ARM異常返回值的合法有哪些?各返回值分別代表什么?

    ARM異常返回值的合法有哪些?各返回值分別代表什么? ARM異常返回值的合法包括:中斷(IRQ)、中止(ABORT)、未定義指令(UND
    的頭像 發(fā)表于 10-19 16:36 ?665次閱讀

    Python函數(shù)作為返回值

    函數(shù)作為返回值 函數(shù)除了作為代碼塊,作為接收參數(shù),還可以把函數(shù)作為結(jié)果返回。 例子: 可變參數(shù)的求和: 通常 def calc_sum (
    的頭像 發(fā)表于 09-27 17:01 ?979次閱讀

    c語(yǔ)言指針用法詳解:如何使用指針變量做函數(shù)參數(shù)

    指針C語(yǔ)言中一個(gè)比較重要的東西,有人說(shuō)指針C語(yǔ)言
    發(fā)表于 09-21 12:32 ?977次閱讀
    <b class='flag-5'>c</b><b class='flag-5'>語(yǔ)言</b><b class='flag-5'>指針</b>用法詳解:如何使用<b class='flag-5'>指針</b>變量做<b class='flag-5'>函數(shù)</b>參數(shù)