标题: 请教函数参数个数问题 [打印本页]

作者: 万家灯火51    时间: 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);

}


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


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

作者: wufa1986    时间: 2024-8-22 15:49
C语言会处理这个问题,很多参数建议还是结构体传递
作者: 李冬    时间: 2024-8-29 17:01
改成int fun试试




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1