有两种情况,第一种:在大部分情况下都是要用到多少个参数就定义多少个.请看例子:
创新互联是专业的珠海网站建设公司,珠海接单;提供成都网站建设、做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行珠海网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
#include stdio.h
void weekdays(int y,int m, int d)//根据日期利用基姆拉尔森公式判定是星期几
//看参数:一共三个,主程序中调用时,也必须用三个参数
{
int iWeek;
if(m==1||m==2) {
m+=12;
y--;
}
iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;//基姆拉尔森公式
switch(iWeek)//判定星期几
{
case 0: printf("星期一\n"); break;
case 1: printf("星期二\n"); break;
case 2: printf("星期三\n"); break;
case 3: printf("星期四\n"); break;
case 4: printf("星期五\n"); break;
case 5: printf("星期六\n"); break;
case 6: printf("星期日\n"); break;
}
}
int main()
{
int year=0,month=0,day=13;
printf("请输入日期:\n格式为:1900,1,1\n");
scanf("%d%d%d",year,month,day);//输入年,月,日
weekdays(year,month,day); //运算
return 0;
}
第二种:不定参数这个有点复杂,还是建议你自行度娘了.这种情况,函数头定义参数个数可以比主函数实际调用时少.
关于c语言中函数调用问题解答如下:
首先如果是编译的这个代码那这个函数肯定被调用了,让你觉得没有调用是因为while循环没有被执行。
图中红色框内代码p1和p2经过赋值p1是肯定大于p2所以不满足while.的条件直接退出了函数。
你需要看看要实现啥在改一下。
如果一个函数要使用参数,它就必须定义接受参数值的变量。
形式参数与实际参数
函数定义时填入的参数我们称之为形式参数,简称形参,它们同函数内部的局部变量作用相同。形参的定义是在函数名之后和函数开始的花括号之前。
调用时填入的参数,我们称之为实际参数,简称实参。
必须确认所定义的形参与调用函数的实际参数类型一致,同时还要保证在调用时形参与实参的个数出现的次序也要一一对应。如果不一致,将产生意料不到的结果。与许多其它高级语言不同,(是健壮的,它总要做一些甚至你不希望的事情,几乎没有运行时错误检查,完
全没有范围检测。作为程序员,必须小心行事以保证不发生错误,安全运行。
赋值调用与引用调用
一般说来,有两种方法可以把参数传递给函数。第一种叫做“赋值调用”(call
by
value),这种方法是把参数的值复制到函数的形式参数中。这样,函数中的形式参数的任何变化不会影响到调用时所使用的变量。
把参数传递给函数的第二种方法是“引用调用”(call
by
reference)。这种方法是把参数的地址复制给形式参数,在函数中,这个地址用来访问调用中所使用的实际参数。这意味着,形式参数的变化会影响调用时所使用的那个变量
传值的函数实参是一定不会被改变的,放心的当作真理记得就行了
通过传值方式的函数,在被调用的函数内都为形参分配了自己的内存空间,所有的操作结果都不会被带出作用域
int 和 void 的区别:
int 返回值,void 不返回值。当需要返回值给主函数时,用int;当不需要返回值给主函数时,用void。
至于括号里的内容:
int n是接收主函数的实参作为形参,就是函数中要用到这个形参。如果不需要从主函数中接收实参,那么就用void。
至于返回值:
当函数返回值给主函数时,主函数需要调用函数并赋值给某一个变量。
例如:
函数int fun() 返回值:return (a);
主函数调用函数fun()
p=fun(int n);
这时,p就接收了函数返回的a的值。
printf("%d",a);
就可以将a的值显示在屏幕上。
你写的程序,函数调用前,数组元素初始化为 全 0。
函数调用时,函数内 有循环 语句,执行:
vals[i] = 1;
把所有元素 赋新值为 1。所以输出 1。
----
应修改:
void findMax(int vals[],int *m) // 返回m要用指针
{
int i;
*m = vals[0];
printf("findMax输出结果:\n");
for (i = 0; i MAXELS; i++)
{
if (vals[i] *m) *m = vals[i];
printf("vals[%d] = %d\n", i, vals[i]);
}
printf("m = %d\n", *m);
}
函数调用:
findMax(nums, value);
函数原型声明:
void findMax(int vals[],int *m) ;