找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2294|回復(fù): 12
收起左側(cè)

關(guān)于C語言函數(shù)參數(shù)傳遞的問題

[復(fù)制鏈接]
ID:705806 發(fā)表于 2022-2-2 00:13 | 顯示全部樓層 |閱讀模式
在接觸到了ucos之后第一次知道了可以通過函數(shù)的參數(shù)來獲得數(shù)據(jù),那入口參數(shù)和返回值有什么區(qū)別呢?求各位大佬指教在這個(gè)兩個(gè)函數(shù)uint8_t ReadData(uint8_t byte)
{
byte = byta + 10;
return byte;
}

void ReadData(uint8_t byte,uint8_t* data);
{
*data = byte + 10;
}


回復(fù)

使用道具 舉報(bào)

ID:827243 發(fā)表于 2022-2-2 08:12 | 顯示全部樓層
如果只有一個(gè)返回值,這兩個(gè)函數(shù)效果基本一樣,只是調(diào)用方法不同

a=ReadData(bb)  和 ReadData(bb, &a)

但如果需要返回多個(gè)值,那只能用第二個(gè)辦法了。
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2022-2-2 10:26 來自觸屏版 | 顯示全部樓層
如果只有一個(gè)數(shù)就沒有分別,如果超過一個(gè)數(shù)就只能用參數(shù)
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2022-2-2 12:27 | 顯示全部樓層
形參實(shí)參的概念回去看教科書,這里一兩句說不清楚。
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2022-2-2 15:18 | 顯示全部樓層
前面的是一般函數(shù)。后邊的是直接通過變量地址存取值。
回復(fù)

使用道具 舉報(bào)

ID:705806 發(fā)表于 2022-2-2 15:54 | 顯示全部樓層
daemondong 發(fā)表于 2022-2-2 08:12
如果只有一個(gè)返回值,這兩個(gè)函數(shù)效果基本一樣,只是調(diào)用方法不同

a=ReadData(bb)  和 ReadData(bb, &a)
...

謝謝大佬,那我以后就一直用第二個(gè)方法吧
回復(fù)

使用道具 舉報(bào)

ID:705806 發(fā)表于 2022-2-2 15:55 | 顯示全部樓層
Hephaestus 發(fā)表于 2022-2-2 12:27
形參實(shí)參的概念回去看教科書,這里一兩句說不清楚。

電子維修半路出家,就一本Cprimerplus入門  
回復(fù)

使用道具 舉報(bào)

ID:705806 發(fā)表于 2022-2-2 18:43 | 顯示全部樓層
謝謝各位大佬的指教
回復(fù)

使用道具 舉報(bào)

ID:290373 發(fā)表于 2022-2-5 10:52 | 顯示全部樓層
指針和形參實(shí)參概念,第一個(gè)是把值傳進(jìn)來,第二個(gè)是把要存放結(jié)果的地址傳進(jìn)來,直接對(duì)地址上的內(nèi)容進(jìn)行修改。
回復(fù)

使用道具 舉報(bào)

ID:491577 發(fā)表于 2022-2-5 12:22 | 顯示全部樓層
羽翼之凋零 發(fā)表于 2022-2-2 15:54
謝謝大佬,那我以后就一直用第二個(gè)方法吧

盡量用第一種,方便模塊化,第二種有出錯(cuò)的風(fēng)險(xiǎn),特別是幾個(gè)函數(shù)同時(shí)改變一個(gè)參數(shù)時(shí)有可能會(huì)出錯(cuò)。
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2022-2-5 16:12 | 顯示全部樓層
羽翼之凋零 發(fā)表于 2022-2-2 15:54
謝謝大佬,那我以后就一直用第二個(gè)方法吧

第二個(gè)方法未必通用,比如大多數(shù)場(chǎng)合只打算傳遞值,并不想要改變變量的值。
回復(fù)

使用道具 舉報(bào)

ID:587810 發(fā)表于 2022-2-5 21:09 | 顯示全部樓層
uint8_t *data是指針指向的一個(gè)存儲(chǔ)區(qū)域而uint8_t  byte則不是
回復(fù)

使用道具 舉報(bào)

ID:415064 發(fā)表于 2022-2-10 14:47 | 顯示全部樓層
第一種是值傳遞,要開辟新的?臻g來存放這個(gè)形參,再把這個(gè)形參的數(shù)據(jù)返回去,再用調(diào)用的函數(shù)去接    第二種是指針傳遞,直接修改
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表