chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

為什么調(diào)用函數(shù)的時(shí)候,有些情況下要傳地址?傳地址有什么好處?

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2023-07-30 10:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

為什么調(diào)用函數(shù)的時(shí)候,有些情況下要傳地址?傳地址有什么好處?

首先有一種情況,是必須要傳地址的,比如交換兩個(gè)數(shù)字。

voidswap(int*x,int*y)
{
    int t = *x;
    *x = *y;
*y=t;
}


int main()
{
    int a = 1, b = 2;
swap(&a, &b);

    return 0;
}
凡是這種涉及到在函數(shù)內(nèi)部修改實(shí)參值的,都得要傳地址才行,通過地址來間接得修改。

再比如我們前兩天講的,函數(shù)如何返回多個(gè)數(shù)據(jù),也可以提前申請(qǐng)好一塊內(nèi)存,把內(nèi)存的地址傳過去,然后把要返回的多個(gè)數(shù)據(jù)保存在這塊內(nèi)存中,也能解決問題。
voidtest(int*a)
{
    /*結(jié)果保存在a中*/
}


int main()
{
intresult[5] = {0};
test(result);

    return 0;
}
除了這種必須傳地址的情況,剩下的可以傳地址,也可以不傳地址,但是傳地址的話有時(shí)候效率更高。
struct Test
{
int a[1024];
};
比如我們寫代碼的時(shí)候經(jīng)常用到結(jié)構(gòu)體,我寫的這個(gè)結(jié)構(gòu)體占了4096字節(jié),如果直接傳值,那么形參也要分配4096個(gè)字節(jié),而且還得把實(shí)參的數(shù)據(jù)拷貝過來。

但是如果換成地址傳遞,形參只需要4個(gè)字節(jié)或者8個(gè)字節(jié),保存結(jié)構(gòu)體的地址就行,這種方式,將會(huì)大大提高函數(shù)調(diào)用的效率。

如果結(jié)構(gòu)體再大一些,比如他要占用兆級(jí)別的內(nèi)存空間,如果還是傳值,那程序就會(huì)很容易奔潰,因?yàn)槌绦虻臈?臻g是有限的,在Linux中默認(rèn)是8M,過度使用的話,很容易超出它的限制,結(jié)果就會(huì)不可控。

所以調(diào)用函數(shù)的時(shí)候應(yīng)該選擇傳值還是傳地址,沒有固定的說法。

傳值操作簡(jiǎn)單,通俗易懂,但是對(duì)于一些復(fù)雜的類型,浪費(fèi)時(shí)間也浪費(fèi)空間。

17623418-2def-11ee-815d-dac502259ad0.png ?

傳地址雖然理解起來困難一些,但它能在函數(shù)內(nèi)部去訪問實(shí)參,對(duì)于一些復(fù)雜的類型,既能提高調(diào)用的效率,又能節(jié)省空間。

17913e70-2def-11ee-815d-dac502259ad0.png?





審核編輯:劉清
聲明:本文內(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)投訴
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    609

    瀏覽量

    29655
  • LINUX內(nèi)核
    +關(guān)注

    關(guān)注

    1

    文章

    318

    瀏覽量

    23067

原文標(biāo)題:值傳遞和地址傳遞

文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語言指針做函數(shù)參數(shù),指針做函數(shù)返回類型

    時(shí)候我們可以使用函數(shù)的返回值來回數(shù)據(jù),在簡(jiǎn)單的情況下是可以的,但是如果返回值其它用途(例如返回函數(shù)
    發(fā)表于 10-24 10:42 ?881次閱讀

    esp-wroom-32如何在不使用wifi功能的情況下獲取mac地址?

    你好 我想檢查 esp-wroom-32 模塊的mac_address。 我已經(jīng)通過初始化wifi然后調(diào)用函數(shù)來esp_get_mac檢查了它。 但是,如果我想在不使用 wifi 功能的情況下獲取該 mac
    發(fā)表于 07-19 09:37

    函數(shù)參數(shù)據(jù)出錯(cuò)

    我在CubSuite+里建了個(gè).c和.h,里面函數(shù)參數(shù)時(shí),單步調(diào)試發(fā)現(xiàn),傳過去去的數(shù)值不對(duì),而在主函數(shù)調(diào)用又傳對(duì)了,這是什么鬼???
    發(fā)表于 08-08 17:26

    labview 中怎么獲取數(shù)值的指針(地址)?調(diào)用dll時(shí)往里面地址

    labview 中怎么獲取數(shù)值的指針(地址)?調(diào)試一個(gè)設(shè)備,調(diào)用dll時(shí)往里面地址,看了官方.h文件,參考了官方的C#代碼,自己用lab
    發(fā)表于 03-15 08:59

    IP地址,IP地址是什么意思

    IP地址,IP地址是什么意思 基本定義 IP地址都是一個(gè)十分重的概念,INTERNET的許多服務(wù)和特點(diǎn)都是通過IP地址體現(xiàn)出來的。
    發(fā)表于 04-03 15:12 ?1816次閱讀

    C語言回調(diào)函數(shù)學(xué)習(xí)

    對(duì)指針的應(yīng)用是C語言編程的精髓所在,而回調(diào)函數(shù)就是C語言里面對(duì)函數(shù)指針的高級(jí)應(yīng)用。簡(jiǎn)而言之,回調(diào)函數(shù)是一個(gè)通過函數(shù)指針調(diào)用
    發(fā)表于 05-27 09:44 ?7389次閱讀

    C語言函數(shù)中的值和指針到底什么區(qū)別

    我們可能聽過C語言中的值和指針,在其他語言中,也有引用一說,那么他們到底什么區(qū)別呢?如果你還不能準(zhǔn)確地分辨,就該好好了解一了。
    的頭像 發(fā)表于 09-08 10:14 ?5669次閱讀

    C語言函數(shù)參數(shù)關(guān)于值和指針什么區(qū)別?

    C語言函數(shù)參數(shù)的值和指針什么區(qū)別?
    的頭像 發(fā)表于 02-26 16:35 ?2955次閱讀

    C語言-函數(shù)的定義、聲明、

    C語言里函數(shù)是非常重要的知識(shí)點(diǎn),一個(gè)完整的C語言程序就是由主函數(shù)和各個(gè)子函數(shù)組成的,主函數(shù)調(diào)用函數(shù)
    的頭像 發(fā)表于 08-14 09:57 ?2672次閱讀

    什么情況下進(jìn)行電能質(zhì)量檢測(cè)?

    什么情況下進(jìn)行電能質(zhì)量檢測(cè)?
    發(fā)表于 09-08 14:20 ?929次閱讀

    使用LPNDR_ReadGlobalInfo函數(shù)塊讀取IP地址和MAC地址

    使用 LPNDR_ReadGlobalInfo 函數(shù)塊可以讀取 PROFINET 設(shè)備的 IP 地址和 MAC 地址。
    的頭像 發(fā)表于 11-14 10:09 ?6511次閱讀

    函數(shù)與遞歸-2

    調(diào)用是把函數(shù)外部創(chuàng)建變量的內(nèi)存地址傳遞給函數(shù)參數(shù)的一種調(diào)用
    的頭像 發(fā)表于 02-21 15:53 ?1104次閱讀
    <b class='flag-5'>函數(shù)</b>與遞歸-2

    DNS解析一個(gè)地址時(shí)候會(huì)返回多個(gè)IP嗎?

    實(shí)現(xiàn)一個(gè)域名對(duì)應(yīng)多個(gè) IP 地址的效果,只需要在 DNS 解析操作平臺(tái),添加一條解析記錄,將網(wǎng)站的域名指向服務(wù)器的 IP 地址。一般情況下,一個(gè)域名對(duì)應(yīng)一個(gè) IP
    的頭像 發(fā)表于 09-19 17:05 ?1802次閱讀
    DNS解析一個(gè)<b class='flag-5'>地址</b>的<b class='flag-5'>時(shí)候</b>會(huì)返回多個(gè)IP嗎?

    什么情況下避免使用系統(tǒng)調(diào)用

    制。如果對(duì)變量的每次訪問都使用上述機(jī)制,由于系統(tǒng)調(diào)用會(huì)陷入內(nèi)核空間,需要頻繁的進(jìn)行上下文切換,這就導(dǎo)致了程序的時(shí)間開銷比較大。 自然的,我們就想到,在多線程環(huán)境中,在某些情況下是否能減少甚至避免使用系統(tǒng)調(diào)用?答案是肯
    的頭像 發(fā)表于 11-13 10:32 ?907次閱讀
    什么<b class='flag-5'>情況下</b>避免使用系統(tǒng)<b class='flag-5'>調(diào)用</b>

    什么情況下IP地址會(huì)相同?

    呈現(xiàn)的是路由器的公網(wǎng)IP地址,所以當(dāng)我們進(jìn)行外部通信的時(shí)候,它們?cè)谶@一層面的IP地址相同。 簡(jiǎn)單來說,你在家里和家人所有的設(shè)備都是通過家里的路由上網(wǎng),對(duì)于外部的網(wǎng)站來說,他們的IP地址
    的頭像 發(fā)表于 11-19 11:20 ?3210次閱讀
    什么<b class='flag-5'>情況下</b>IP<b class='flag-5'>地址</b>會(huì)相同?