请问C语言函数的调用规则是什么,例如主函数main、 函数A 、函数B,这3者的顺序能否打乱,
创新互联建站主营洪山网站建设的网络公司,主营网站建设方案,成都app软件开发,洪山h5成都小程序开发搭建,洪山网站营销推广欢迎洪山等地区企业咨询
可以打乱,依个人习惯。
如果 A函数放最前,能否直接调用B函数?还是只能后面的函数调用前面的函数,还是说只要在A函数中声明B函数就能够调用后面的B函数。?
A调B,或B调A都可以,如果B在A后,B可直接调用A,否则,先在B前声明一下A再调用A。
main函数的有没有固定的位置,例如要放最前面?或最后面?
没有要求,一般单独一个C文件放main函数。
我需要程序调用这一部分的 语法描述图,因为规则不是固定,所以画起来有点难度,有没人能提供 程序调用的语法描述图 就是类似 void ---- ident----(----)----{----语句…… 这样的图。加分加分!!
不明白,写两个简单函数实验一下就知道了,这样印象会深刻点不容易忘。
void printstar();
void print_message();
上面的叫声明,下面的叫定义,其本质都是同一个函数
void printstar()
{
printf("******************\n");
}
void print_message()
{
printf(" How do you do!\n");
}
你理解的书上的“说明”应该是函数定义部分,如果在声明的时候同时把函数体给出来应该就是书上的“说明”了。
声明和定义分开的方式让程序可读性增强,结构更清晰一些。
你写的程序,函数调用前,数组元素初始化为 全 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) ;
错的比较多,要注意到printf("The result is: %s\n", str);这句,说明逆序是在原字符数组上的,不能用一个临时数组。 下面是修改过的代码:
#includestdio.h
#includestring.h
/* 本部分代码功能建议:函数原型声明 */
/* User Code Begin(Limit: lines=1, lineLen=50, 考生可在本行后添加代码、最多1行、行长=50字符) */
char *ABC(char *str1); /*是否有误?????*/
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
int main(void)
{
char str[128];
printf("Input a string: ");
gets(str);
/* 本部分代码功能建议:调用用户自定义函数将字符串str逆序存放 */
/* User Code Begin(Limit: lines=1, lineLen=50, 考生可在本行后添加代码、最多1行、行长=50字符) */
ABC(str); /*是否有误?????*/
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
printf("The result is: %s\n", str);
return 0;
}
/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数的定义,行数不限) */
char *ABC(char *str1) /*本段及其以下是否有误?????*/
{
int len = 0, i;
char t;
while (str1[len]) len++;
len--;
for (i = 0; i len; i++, len--)
{
t = str1[i];
str1[i] = str1[len];
str1[len] = t;
}
return str1;
}
#include"stdio.h"
char getGrade(int score)
{
char grade;
if(score=85) grade='A';
else if(score=70) grade='B';
else if(score=60) grade='C';
else grade='E';
return (grade);
}
void output(char ch)
{
printf("getGrade=%c\n",ch);
}
void main()
{
int x ;
char ch;
printf("input x:\n");
scanf("%d",x);
ch=getGrade(x);
output(ch);
}
如果一个函数要使用参数,它就必须定义接受参数值的变量。
形式参数与实际参数
函数定义时填入的参数我们称之为形式参数,简称形参,它们同函数内部的局部变量作用相同。形参的定义是在函数名之后和函数开始的花括号之前。
调用时填入的参数,我们称之为实际参数,简称实参。
必须确认所定义的形参与调用函数的实际参数类型一致,同时还要保证在调用时形参与实参的个数出现的次序也要一一对应。如果不一致,将产生意料不到的结果。与许多其它高级语言不同,(是健壮的,它总要做一些甚至你不希望的事情,几乎没有运行时错误检查,完
全没有范围检测。作为程序员,必须小心行事以保证不发生错误,安全运行。
赋值调用与引用调用
一般说来,有两种方法可以把参数传递给函数。第一种叫做“赋值调用”(call
by
value),这种方法是把参数的值复制到函数的形式参数中。这样,函数中的形式参数的任何变化不会影响到调用时所使用的变量。
把参数传递给函数的第二种方法是“引用调用”(call
by
reference)。这种方法是把参数的地址复制给形式参数,在函数中,这个地址用来访问调用中所使用的实际参数。这意味着,形式参数的变化会影响调用时所使用的那个变量