
正文
c语言中的函数定义文件 c语言函数定义的一般格式
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如何在C语言中定义一个函数?
需要准备的材料分别有c语言中的函数定义文件:电脑、C语言编译器。
1、首先c语言中的函数定义文件,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。
2、在test.cpp文件中,输入C语言代码:int fun(){return 1;}。
3、编译器运行test.cpp文件,此时成功调用fun()函数输出了内容。
相关问答
Q1: C语言怎样才能在头文件中实现函数定义?
C语言在头文件中实现函数定义,可以按如下方法:
新建一个demo.h(也可以为其它文件名)的头文件,在头文件中添加函数定义,如:extern void demo();
新建一个c文件,在文件中将demo.h包含进来:#include“demo.h”,在此文件中将函数的主体写上,如下:
void demo()
{
printf("Hello.");
}
经过上述步骤,即可完成在头文件中实现函数定义。
Q2: c语言如何定义函数
函数是用户与程序c语言中的函数定义文件的接口c语言中的函数定义文件,在定义一个函数前,首先要清楚以下三个问题。1) 函数c语言中的函数定义文件的功能实现及算法选择。算法选择会在后续文章详细讲解,本节重点关注函数的功能实现。一般选取能体现函数功能的函数名,且见名知意,如求和函数的函数名可取为 add,求最大值的函数名可取为 max,排序函数可取名为 sort 等。2) 需要用户传给该函数哪些参数、什么类型,即函数参数。3) 函数执行完后返回给调用者的参数及类型,即函数返回值类型。 函教定义格式 函数定义的一般格式为c语言中的函数定义文件: 返回类型 函数名 (类型参数1,类型参数2,…) {函数体 }也可以不含参数,不含参数时,参数表中可写关键字 void 或省略,为规范起见,教程中对没有参数的函数,参数表中统一写 void。例如: 类型 函数名 () {函数体 }等价于: 类型 函数名 (void) //建议的书写方式 {函数体 } 如果该函数没有返回类型,则为 void 类型。例如: void add (int x,int y) {printf ("sum=%d\n", x+y); } 除了 void 类型外,在函数体中,均需要显式使用 return 语句返回对应的表达式的值。 函教返回值 函数的值是指调用函数结束时,执行函数体所得并返回给主调函数的值。 关于函数返回值说明如下。1) 带返回值的函数,其值一般使用 return 语句返回给调用者。其格式为: return 表达式;或者 return (表达式);例如: int add (int a, int b) {return (a + b); //return 后为表达式 } 函数可以含一个或多个 return 语句,但每次调用时只能执行其中一个 return 语句。例如,求整数绝对值的函数: int f (int n) //含多个return语句,但每次调用只执行一个 {if (n = 0)return n;elsereturn -n; }
Q3: 如何在c语言中定义函数在.h文件,和在新文件中使用
额,书上都有吧。
一般来说,头文件(.h)都包含了一些常用的而且已经通过了测试证明其运行正确的函数,
在自己的程序中用#include引用这些头文件,直接使用其中一些已经写好的函数,就省去
了很多麻烦,提高了代码的重用性。例如我们常常在程序中写下 #include stdio.h 语
句,以使用头文件 stdio.h 中的函数,比如说printf函数。可是该如何写自己的头文件,
以让自己的函数能被再次使用呢?
也许有同学会想,真接把自己的函数声明与定义移到.h文件里就可以了。就如下面的做法:
在工程里建好main.c后,再建一个点utils.h文件,把常用的函数如mean()放这里。
// file name : utils.h
// version : 1
doublemean(double, double); //求两个数的均值
doublemean(double a, double b)
{
return (a+b)/2.0;
}
// file name : main.c
// version : 1
#includestdio.h
#include"utils.h"
intmain()
{
double a,b,avg;
a = 1.0;
b = 3.0;
avg = mean(a,b); //调用utils.h里的mean函数
printf("%lf\n", avg);
return0;
}
以上的代码是可以编译通过的,并运行正确的。但是,这样的代码并不完善。如果
再写一个头文件other.h,而other.h又引用了utils.h的mean()函数,这时就会出
问题:
// file name : utils.h
// version : 1
doublemean(double, double); //求两个数的均值
doublemean(double a, double b)
{
return (a+b)/2.0;
}
// file name : other.h
// version : 1
#include"utils.h" //引用 utils.h
doublemean4(double, double, double, double);
doublemean4(double a, double b, double c, double d)
{
returnmean(mean(a,b), mean(c,d)); // 调用了 utils.h 里的 mean 函数
}
// file name : main.c
// version : 2
// 增加了对other.h的引用
#includestdio.h
#include"utils.h"
#include"other.h"
intmain()
{
double a,b,c,d,avg;
a = 1.0;
b = 3.0;
c = 4.0;
d = 2.0;
avg = mean(a,b); //调用utils.h里的mean函数
printf("%lf\n", avg);
avg = mean4(a,b,c,d); //调用other.h里的mean4函数
printf("%lf\n", avg);
return0;
}
而此时,编译就不能通过了,并出现如下的错误信息:
utils.h:9: Error: 'mean'is already defined
究其原因就是,函数的声明可以在程序中写多次,但函数定义只能有一个。main.c引用了
utils.h文件,因此main.c里会有一个mean()函数的声明,而other.h里也引用了utils.h
文件,所以又有一个mean()函数的声明。
main.c -- utils.h 第一个mean()
-- other.h -- utils.h 第二个mean()
历史原因,C/C++编译器不能将这样相同的重复声明区别开,所以必须通过其它的方法使得工程
里,mean()只被声明一次。一般来说,都是通过#ifndef/#define/#endif宏命令组合来实现避免
重复声明的。修改后的代码如下:
//file name : utils.h
//version 2
#ifndef UTILS_H_INCLUDED // 如果没有定义标识符
// UTILS_H_INCLUDED,则
// 继续编译下面的代码,
// 直到 #endif
#define UTILS_H_INCLUDED // 定义标识符 UTILS_H_INCLUDED
doublemean(double, double);
doublemean(double a, double b)
{
return (a+b)/2.0;
}
#endif// UTILS_H_INCLUDED
其它代码都同前。#ifndef/#endif 就像 if(!(...)) {} 一样,让编译器明白,如果没有定义标
识符UTILS_H_INCLUDED,就包含下面的代码,直到#endif;否则,到#endif为止的代码就不被包
含到文件里。#define表示定义一个标识符(不一定要赋值给这个标识符)。
当main.c引用utils.h时,由于UTILS_H_INCLUDED没被定义,所以#ifndef与#endif之间的代码都
会被main.c包含,所以 #define 语句会被执行,定义一个UTILS_H_INCLUDED标识符,同时工程里
也有了一个mean()函数的定义;当main.c引用other.h时,other.h里对utils.h的引用并不会再次
定义mean(),因为UTILS_H_INCLUDED已经被定义了,通过#ifndef/#endif的控制作用,虽然other.h
引用了utils.h,但引用的头文件并没有包含mean()的声明,自然就不会再引起重复定义的错误,
编译就能通过了。
基于相同的道理,所有的.h文件,都应该加入#ifndef/#define/#endif的组合,以使头文件都能
重复利用而不引起重复定义的错误。例子中的other.h文件也应如此,这里就留给同学自己添加了。
参考网址:
关于c语言中的函数定义文件和c语言函数定义的一般格式的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







