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

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 1010|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)教函數(shù)參數(shù)個(gè)數(shù)問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:349276 發(fā)表于 2024-8-21 12:20 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
很多題中都說(shuō)c51函數(shù)參數(shù)是寄存器傳遞的,個(gè)數(shù)有嚴(yán)格顯示,不能超過(guò)3個(gè)。我測(cè)試了,很多個(gè)都沒(méi)有問(wèn)題啊。例如下面,編譯完全通過(guò),沒(méi)任何問(wèn)題。
#include<reg51.h>
char fun(int a,int b, int c, int d,char e){

        return a+b+c+d+e;
}

void main(){
  char x;
        x=fun(1,2,3,4,5);
        P2=x;
        while(1);

}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1121801 發(fā)表于 2024-8-21 16:33 | 只看該作者
先了解全局變量與局部變量的區(qū)別,你這個(gè)是函數(shù)內(nèi)定義的局部變量,局部變量的限制要高一點(diǎn)吧,一般范圍是在5-10個(gè)。
全局變量一般要求是不超過(guò)2個(gè),當(dāng)然程序中你多了程序也可以執(zhí)行(不排除一些編程軟件直接限制全局變量在函數(shù)的數(shù)量,直接報(bào)錯(cuò)),多于3個(gè)時(shí)一部分通過(guò)存儲(chǔ)區(qū)傳遞,直接的影響了程序的執(zhí)行效率和程序的可讀性,對(duì)于程序執(zhí)行和維護(hù)都不友好

回復(fù)

使用道具 舉報(bào)

板凳
ID:69038 發(fā)表于 2024-8-21 17:15 | 只看該作者
C51的函數(shù)所帶的參數(shù)是要入棧的,所以能帶多少個(gè)參數(shù)由單片的RAM來(lái)決定。
理論上可以很多,只要你的RAM夠大。
但如果一個(gè)函數(shù)如果帶了10多個(gè)、甚至更多個(gè)參數(shù),明顯不是個(gè)好的編程習(xí)慣和風(fēng)格。
所以RAM還是該省省、該花花。
回復(fù)

使用道具 舉報(bào)

地板
ID:879348 發(fā)表于 2024-8-22 15:49 | 只看該作者
C語(yǔ)言會(huì)處理這個(gè)問(wèn)題,很多參數(shù)建議還是結(jié)構(gòu)體傳遞
回復(fù)

使用道具 舉報(bào)

5#
ID:709761 發(fā)表于 2024-8-29 17:01 | 只看該作者
改成int fun試試
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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