打开Ubuntu,并在目标路径下开启一个终端。
在霍城等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、成都做网站 网站设计制作按需求定制制作,公司网站建设,企业网站建设,品牌网站建设,营销型网站建设,外贸网站制作,霍城网站建设费用合理。
选定一个路径,使用touch命令创建三个文件,function.h,function.c,test.c,分别用来做函数头文件、函数源文件以及测试文件。
首先用vim命令与vsplit依次打开三个文件。
在头文件中添加重复包含的宏,并添加四则运算的函数声明。
在function.c中将function.h包含进来,并具体实现四个方法。注意出发要对除数是否为0进行判断。
然后编写测试程序进行测试。总的程序代码如下:
保存所有的程序并退出,使用gcc进行编译,并运行得到的结果如下。这就是函数的声明、定义以及调用。
语言的作用域规则:是一组确定一部分代码是否“可见”或可访问另一部分代码和数据的规则。
C语言中的每一个函数都是一个独立的代码块。一个函数的代码块是隐藏于函数内部的,不能被任何其它函数中的任何语句(除调用它的语句之外)所访问(例如,用g o t o语句跳转到另一个函数内部是不可能的)。
构成一个函数体的代码对程序的其它部分来说是隐蔽的,它既不能影响程序其它部分,也不受其它部分的影响。换言之,由于两个函数有不同的作用域,定义在一个函数内部的代码数据无法与定义在另一个函数内部的代码和数据相互作用。
#define _CRT_SECURE_NO_WARNINGS
#include stdio.h
//声明一个求和的函数
int sum(int a, int b);
int main(int argc, char* argv[])
{
int x = 5, y = 7;
int s = sum(x, y); //调用函数
printf("x + y = %d \n", s);
system("pause");
return 0;
}
//定义求和函数
int sum(int a, int b)
{
return a + b;
}
更多C语言教程
给你一个简单的菜单程序吧。其中的子函数,填充成楼主所需即可。
#include
/*子函数1*/
fun1() {
printf ("子函数1\n");
}
/*子函数2*/
fun2() {
printf ("子函数2\n");
}
/*子函数3*/
fun3() {
printf ("子函数3\n");
}
/*子函数4*/
fun4() {
printf ("子函数4\n");
}
int main(void) {
int key; /*命令编号*/
do {
system("cls"); /*清屏*/
/*打印菜单*/
printf ("======================================================\n");
printf (" #\t功能详情\n");
printf ("------------------------------------------------------\n");
printf (" 1\t功能1\n");
printf (" 2\t功能2\n");
printf (" 3\t功能3\n");
printf (" 4\t功能4\n");
printf (" 5\t退出\n");
printf ("======================================================\n");
printf ("\n");
printf("请输入命令编号以开启操作:");
/*输入命令编号*/
scanf("%d",key);
printf ("\n");
/*switch函数实现输入功能序号执行相应函数*/
switch (key) {
case 1: fun1(); break; /*子函数1*/
case 2: fun2(); break; /*子函数2*/
case 3: fun3(); break; /*子函数3*/
case 4: fun4(); break; /*子函数4*/
case 5: printf("程序结束!按任意键退出...\n\n"); break;
default:printf("输入错误,请重新输入!\n\n"); break;
}
/*屏幕暂留*/
if (key!=5) {
printf ("\n");
printf("按Enter键继续...\n");
printf ("\n");
fflush(stdin);
getch ();
}
} while (key!=5);
/*屏幕暂留*/
fflush(stdin);
getch ();
return 0;
}运行结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#includestdio.h
#includewindows.h
//\n1.增加 2.查询 3.删除 4.退出\n");
//声明函数
void addnd();
void searchnd();
void printnd();
void charund();
//含 枚举类型 分支switch
enum mmenu{/*定义一个名为mmenu的枚举类型
可以让常量有一定的含义(如实现菜单)*/
addn=1,//默认是0,定义为1后 后面的成员也会自动变换(排序)
searchn,
printn,
quitn
};
void main(){
enum mmenu input;
while(1){
printf("菜单\n1.增加 2.查询 3.打印 4.退出\n");
scanf("%d",input);
Sleep(500);
system("cls");
switch(input){//case内的情况 只能是整型或字符型的常量
case addn:printf("选中了1.增加\n");addnd();break;
case searchn:printf("选中了2.查询\n");searchnd();break;
case printn:printf("选中了3.打印\n");printnd();break;
case quitn:printf("选中了4.退出\n");exit(0);break;
default :printf("不在选项内,请重新输入!\n");break;}
};
}
void addnd(){//增加
printf("//请自定义addnd()函数代码//\n");
}
void searchnd(){
printf("//请自定义searchnd()函数代码//\n");
}
void printnd(){//打印
printf("//请自定义printnd()函数代码//\n");
}
void charund(){
printf("//请自定义charund函数代码//\n");
}
我想C语言中调用函数分以下内几部:\x0d\x0a1)根据调用的函数名找到函数入口;\x0d\x0a2)在栈中审请调用函数中的参数及函数体内定义的变量的内存空间\x0d\x0a3)函数执行完后,释放函数在栈中的审请的参数和变量的空间,最后返回值(如果有的话)
C语言中,函数调用的一般形式为:
函数名(实际参数表)
对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。
#includestdio.h
int fun(int x, int y); // 函数声明,如果函数写在被调用处之前,可以不用声明
void main()
{
int a=1, b=2, c;
c = fun(a, b); // 函数的调用,调用自定义函数fun,其中a,b为实际参数,传递给被调用函数的输入值
}
// 自定义函数fun
int fun(int x, int y) // 函数首部
{ // {}中的语言为函数体
return xy ? x : y; // 返回x和y中较大的一个数
}
扩展资料
C语言中不允许作嵌套的函数定义。因此各函数之间是平行的,不存在上一级函数和下一级函数的问题。但是C语言允许在一个函数的定义中出现对另一个函数的调用。
这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。这与其它语言的子程序嵌套的情形是类似的。其关系可表示如图。
图表示了两层嵌套的情形。其执行过程是:执行main函数中调用a函数的语句时,即转去执行a函数,在a函数中调用b 函数时,又转去执行b函数,b函数执行完毕返回a函数的断点继续执行,a函数执行完毕返回main函数的断点继续执行。
参考资料:函数调用_百度百科