找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 948|回复: 4
打印 上一主题 下一主题
收起左侧

请教函数参数个数问题

[复制链接]
跳转到指定楼层
楼主
ID:349276 发表于 2024-8-21 12:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
很多题中都说c51函数参数是寄存器传递的,个数有严格显示,不能超过3个。我测试了,很多个都没有问题啊。例如下面,编译完全通过,没任何问题。
#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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1121801 发表于 2024-8-21 16:33 | 只看该作者
先了解全局变量与局部变量的区别,你这个是函数内定义的局部变量,局部变量的限制要高一点吧,一般范围是在5-10个。
全局变量一般要求是不超过2个,当然程序中你多了程序也可以执行(不排除一些编程软件直接限制全局变量在函数的数量,直接报错),多于3个时一部分通过存储区传递,直接的影响了程序的执行效率和程序的可读性,对于程序执行和维护都不友好

回复

使用道具 举报

板凳
ID:69038 发表于 2024-8-21 17:15 | 只看该作者
C51的函数所带的参数是要入栈的,所以能带多少个参数由单片的RAM来决定。
理论上可以很多,只要你的RAM够大。
但如果一个函数如果带了10多个、甚至更多个参数,明显不是个好的编程习惯和风格。
所以RAM还是该省省、该花花。
回复

使用道具 举报

地板
ID:879348 发表于 2024-8-22 15:49 | 只看该作者
C语言会处理这个问题,很多参数建议还是结构体传递
回复

使用道具 举报

5#
ID:709761 发表于 2024-8-29 17:01 | 只看该作者
改成int fun试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表