RM新时代网站-首页

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

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

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

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

朱老師物聯(lián)網(wǎng)大講堂 ? 2024-08-10 08:11 ? 次閱讀

嵌入式開發(fā)領(lǐng)域,函數(shù)指針、指針函數(shù)、數(shù)組指針和指針數(shù)組是一些非常重要但又容易混淆的概念。理解它們的特性和應(yīng)用場(chǎng)景,對(duì)于提升嵌入式程序的效率和質(zhì)量至關(guān)重要。

一、指針函數(shù)與函數(shù)指針

指針函數(shù):

定義:指針函數(shù)是指返回值為指針的函數(shù)。

語(yǔ)法:返回值類型 *函數(shù)名(參數(shù)列表)。

示例代碼:

#include #include
int *getNumber(int a, int b) { int *result = (int *)malloc(sizeof(int)); *result = a + b; return result;}
int main() { int *sum = getNumber(3, 4); printf("Sum: %d\n", *sum); free(sum); return 0;}

應(yīng)用場(chǎng)景:

通常用于動(dòng)態(tài)內(nèi)存分配的場(chǎng)景。比如在嵌入式系統(tǒng)中,需要根據(jù)不同的條件動(dòng)態(tài)分配內(nèi)存來存儲(chǔ)數(shù)據(jù)時(shí),可以使用指針函數(shù)。它可以根據(jù)輸入的參數(shù),在堆上分配合適大小的內(nèi)存空間,并返回指向該空間的指針。

函數(shù)指針:

定義:函數(shù)指針是指向函數(shù)的指針變量。

語(yǔ)法:返回值類型 (*指針變量名)(參數(shù)列表)。

示例代碼:

#include
int add(int a, int b) { return a + b;}
int subtract(int a, int b){ return a - b;}
int main() { int (*funcPtr)(int, int); funcPtr = add; int result1 = funcPtr(5, 3); printf("Addition result: %d\n", result1);
funcPtr = subtract; int result2 = funcPtr(5, 3); printf("Subtraction result: %d\n", result2); return 0;}

應(yīng)用場(chǎng)景:

事件驅(qū)動(dòng)系統(tǒng):在嵌入式系統(tǒng)中,可能會(huì)有多個(gè)不同的事件源(如按鍵、傳感器等),每個(gè)事件都對(duì)應(yīng)一個(gè)處理函數(shù)??梢允褂煤瘮?shù)指針來根據(jù)不同的事件調(diào)用相應(yīng)的處理函數(shù),提高系統(tǒng)的靈活性和可擴(kuò)展性。

回調(diào)函數(shù):

當(dāng)一個(gè)函數(shù)需要在特定的操作完成后執(zhí)行另一個(gè)函數(shù)時(shí),可以將另一個(gè)函數(shù)的指針作為參數(shù)傳遞給它。例如,在嵌入式網(wǎng)絡(luò)通信中,當(dāng)接收到數(shù)據(jù)后,調(diào)用一個(gè)預(yù)先定義的處理數(shù)據(jù)的回調(diào)函數(shù)。

二、指針數(shù)組與數(shù)組指針

指針數(shù)組

定義:指針數(shù)組是由指針組成的數(shù)組。

語(yǔ)法:數(shù)據(jù)類型 *數(shù)組名[數(shù)組大小]。

示例代碼:

#include
intmain(){ char *strings[] = {"Hello", "World", "Embedded"}; for (int i = 0; i < 3; i++)????{ printf("%s\n", strings[i]); } return 0;}

應(yīng)用場(chǎng)景:

管理多個(gè)字符串:在嵌入式系統(tǒng)中,如果需要處理多個(gè)字符串,可以使用指針數(shù)組。每個(gè)指針指向一個(gè)字符串的首地址,這樣可以方便地對(duì)多個(gè)字符串進(jìn)行操作和管理。

動(dòng)態(tài)配置不同數(shù)據(jù)類型的指針:在一些需要根據(jù)不同情況動(dòng)態(tài)配置不同數(shù)據(jù)類型指針的場(chǎng)景下,指針數(shù)組可以發(fā)揮作用。比如根據(jù)不同的傳感器類型,配置不同的指針來獲取相應(yīng)的數(shù)據(jù)。

數(shù)組指針:

定義:數(shù)組指針是指向數(shù)組的指針。

語(yǔ)法:數(shù)據(jù)類型 (*指針變量名)[數(shù)組大小]。

示例代碼:

#include
int main() { int arr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; int (*arrayPtr)[3] = arr; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { printf("%d ", (*arrayPtr)[j]); } arrayPtr++; printf("\n"); } return 0;}

應(yīng)用場(chǎng)景:

多維數(shù)組的參數(shù)傳遞:在嵌入式程序中,當(dāng)需要將多維數(shù)組作為函數(shù)參數(shù)傳遞時(shí),通常使用數(shù)組指針。這樣可以避免數(shù)組在傳遞過程中的降維問題,確保函數(shù)能夠正確訪問多維數(shù)組的元素。

指向動(dòng)態(tài)分配的二維數(shù)組:在動(dòng)態(tài)內(nèi)存分配的二維數(shù)組中,數(shù)組指針可以方便地管理和訪問二維數(shù)組的元素。例如,在嵌入式圖形處理中,動(dòng)態(tài)分配一個(gè)二維像素?cái)?shù)組,使用數(shù)組指針來操作該數(shù)組。

總之,在嵌入式開發(fā)中,正確理解和運(yùn)用函數(shù)指針、指針函數(shù)、數(shù)組指針和指針數(shù)組,可以使程序更加靈活、高效和易于維護(hù)。通過掌握這些概念,開發(fā)者能夠更好地應(yīng)對(duì)各種復(fù)雜的嵌入式系統(tǒng)開發(fā)需求。

希望這篇文章能夠幫助大家理清這些容易混淆的概念及其在嵌入式中的應(yīng)用場(chǎng)景,讓我們?cè)谇度胧介_發(fā)的道路上更進(jìn)一步。

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

    關(guān)注

    1

    文章

    417

    瀏覽量

    25939
  • 函數(shù)指針
    +關(guān)注

    關(guān)注

    2

    文章

    56

    瀏覽量

    3778
  • 指針函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    2751
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    函數(shù)指針指針函數(shù)的概念

    不少朋友會(huì)混淆“函數(shù)指針”和“指針函數(shù)”這兩個(gè)概念,本文詳細(xì)介紹一下。
    發(fā)表于 03-09 10:49 ?1192次閱讀

    C語(yǔ)言中指針數(shù)組數(shù)組指針的區(qū)別

    指針數(shù)組之間存在著緊密的關(guān)系。在本文中,我們將探討指針數(shù)組的關(guān)系、指針算術(shù)和數(shù)組遍歷、多維
    發(fā)表于 08-17 15:29 ?410次閱讀

    函數(shù)指針指針函數(shù)定義

    函數(shù)指針指針函數(shù),C語(yǔ)言學(xué)習(xí)中最容易混淆的一些概念,好好學(xué)習(xí)吧
    發(fā)表于 01-11 16:44 ?0次下載

    數(shù)組指針的詳細(xì)講解

    數(shù)組指針的詳細(xì)講解
    發(fā)表于 10-16 08:44 ?0次下載

    c語(yǔ)言函數(shù)指針定義,指針函數(shù)函數(shù)指針的區(qū)別

     往往,我們一提到指針函數(shù)函數(shù)指針的時(shí)候,就有很多人弄不懂。下面就由小編詳細(xì)為大家介紹C語(yǔ)言中函數(shù)指針
    發(fā)表于 11-16 15:18 ?3624次閱讀

    指針數(shù)組數(shù)組指針的區(qū)別

    這里我們區(qū)分兩個(gè)重要的概念:指針數(shù)組、數(shù)組指針
    的頭像 發(fā)表于 06-29 15:30 ?2w次閱讀
    <b class='flag-5'>指針</b><b class='flag-5'>數(shù)組</b>和<b class='flag-5'>數(shù)組</b><b class='flag-5'>指針</b>的區(qū)別

    理解函數(shù)指針、函數(shù)指針數(shù)組函數(shù)指針數(shù)組指針

    理解函數(shù)指針、函數(shù)指針數(shù)組函數(shù)指針
    的頭像 發(fā)表于 06-29 15:38 ?1.5w次閱讀
    理解<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>、<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b><b class='flag-5'>數(shù)組</b>、<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b><b class='flag-5'>數(shù)組</b>的<b class='flag-5'>指針</b>

    單片機(jī)學(xué)習(xí)筆記————指針的第三大好處,指針作為數(shù)組函數(shù)中的輸出接口

    單片機(jī)學(xué)習(xí)筆記————指針的第三大好處,指針作為數(shù)組函數(shù)中的輸出接口
    發(fā)表于 11-26 10:51 ?1次下載
    單片機(jī)學(xué)習(xí)筆記————<b class='flag-5'>指針</b>的第三大好處,<b class='flag-5'>指針</b>作為<b class='flag-5'>數(shù)組</b>在<b class='flag-5'>函數(shù)</b>中的輸出接口

    單片機(jī)學(xué)習(xí)筆記————指針的第二大好處,指針作為數(shù)組函數(shù)中的輸入接口

    單片機(jī)學(xué)習(xí)筆記————指針的第二大好處,指針作為數(shù)組函數(shù)中的輸入接口
    發(fā)表于 11-26 10:51 ?7次下載
    單片機(jī)學(xué)習(xí)筆記————<b class='flag-5'>指針</b>的第二大好處,<b class='flag-5'>指針</b>作為<b class='flag-5'>數(shù)組</b>在<b class='flag-5'>函數(shù)</b>中的輸入接口

    二維數(shù)組數(shù)組指針以及指針數(shù)組

    二維數(shù)組數(shù)組指針以及指針數(shù)組
    的頭像 發(fā)表于 08-16 09:02 ?2646次閱讀

    C語(yǔ)言中什么是指針數(shù)組

    在C語(yǔ)言中一個(gè)數(shù)組,若其元素均為指針類型數(shù)據(jù),稱為指針數(shù)組,也就是說,指針數(shù)組中的每一個(gè)元素都存
    的頭像 發(fā)表于 03-10 15:26 ?1745次閱讀

    數(shù)組指針不能混用的情況

    數(shù)組指針不能混用的情況? 數(shù)組指針是 C/C++ 中非常常見的特性和概念。然而,在某些情況下,數(shù)組
    的頭像 發(fā)表于 12-07 13:46 ?598次閱讀

    數(shù)組指針不相同嗎?數(shù)組指針有哪些區(qū)別

    數(shù)組就是指針,指針就是數(shù)組,這樣的言論在評(píng)論區(qū)看到不下于10次。
    的頭像 發(fā)表于 12-13 16:34 ?1484次閱讀
    <b class='flag-5'>數(shù)組</b>和<b class='flag-5'>指針</b>不相同嗎?<b class='flag-5'>數(shù)組</b>和<b class='flag-5'>指針</b>有哪些區(qū)別

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

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

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

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