① c语言中函数是怎样用的
定义好的函数,若在主函数之后定义,在主函数中要声明一下。
声明方法为把定义好的函数按原样写下,再加上一个“;”。
若在主函数之前定义,在主函数就可以直接调用。
一般格式k=函数名(变量);
函数运算结果通过return语句返回,赋值给k。
希望你能看懂!
② c语言定义函数是什么
将代码段封装成函数的过程叫做函数定义。
函数可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明,根据这一点可以将函数分为有参函数和无参函数。
相关概念:
函数不能嵌套定义,main 也是一个函数定义,所以要将 sum 放在 main 外面。函数必须先定义后使用,所以 sum 要放在 main 前面。
函数定义时给出的参数称为形式参数,简称形参;函数调用时给出的参数(也就是传递的数据)称为实际参数,简称实参。函数调用时,将实参的值传递给形参,相当于一次赋值操作。
原则上讲,实参的类型和数目要与形参保持一致。如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型,例如将 int 类型的实参传递给 float 类型的形参就会发生自动类型转换。
③ c语言定义函数
你想通过函数参数返回赋值结果,参数要用指针,调用要用地址:
bool a,b;
void action1(bool *a,bool *b); // 参数要用指针,函数要修正一下。
action1( &a, &b); // 调用要用地址
printf("a=%d,b=%d\n",a,b);
如果没有头文件stdbool.h, 则按下面方法:
#include <stdio.h>
//#include <stdbool.h>
#include <windows.h>
#define bool BOOL
#define true TRUE
#define false FALSE
int main()
{
bool a,b;
void action1(bool *a,bool *b);
action1( &a, &b);
printf("a=%d,b=%d\n",a,b);
return 0;
}
void action1(bool *a, bool *b){
*a =true;
*b = false;
}
④ c语言常用的函数有哪些
#include
<assert.h>
//设定插入点
#include
<ctype.h>
//字符处理
#include
<errno.h>
//定义错误码
#include
<float.h>
//浮点数处理
#include
<fstream.h>
//文件输入/输出
#include
<iomanip.h>
//参数化输入/输出
#include
<iostream.h>
//数据流输入/输出
#include
<limits.h>
//定义各种数据类型最值常量
#include
<locale.h>
//定义本地化函数
#include
<math.h>
//定义数学函数
#include
<stdio.h>
//定义输入/输出函数
#include
<stdlib.h>
//定义杂项函数及内存分配函数
#include
<string.h>
//字符串处理
#include
<strstrea.h>
//基于数组的输入/输出
#include
<time.h>
//定义关于时间的函数
#include
<wchar.h>
//宽字符处理及输入/输出
#include
<wctype.h>
//宽字符分类
标准
C/C++
(同上的不再注释)
#include
<algorithm>
//STL
通用算法
#include
<bitset>
//STL
位集容器
#include
<cctype>
#include
<cerrno>
#include
<clocale>
#include
<cmath>
#include
<complex>
//复数类
#include
<cstdio>
#include
<cstdlib>
#include
<cstring>
#include
<ctime>
#include
<deque>
//STL
双端队列容器
#include
<exception>
//异常处理类
#include
<fstream>
#include
<functional>
//STL
定义运算函数(代替运算符)
#include
<limits>
#include
<list>
//STL
线性列表容器
#include
<map>
//STL
映射容器
#include
<iomanip>
#include
<ios>
//基本输入/输出支持
#include
<iosfwd>
//输入/输出系统使用的前置声明
#include
<iostream>
#include
<istream>
//基本输入流
#include
<ostream>
//基本输出流
#include
<queue>
//STL
队列容器
#include
<set>
//STL
集合容器
#include
<sstream>
//基于字符串的流
#include
<stack>
//STL
堆栈容器
#include
<stdexcept>
//标准异常类
#include
<streambuf>
//底层输入/输出支持
#include
<string>
//字符串类
#include
<utility>
//STL
通用模板类
#include
<vector>
//STL
动态数组容器
#include
<cwchar>
#include
<cwctype>
using
namespace
std;
C99
增加
#include
<complex.h>
//复数处理
#include
<fenv.h>
//浮点环境
#include
<inttypes.h>
//整数格式转换
#include
<stdbool.h>
//布尔环境
#include
<stdint.h>
//整型环境
#include
<tgmath.h>
//通用类型数学宏
⑤ 关于C语言的函数
取决于你要写什么东西——例如软件中是否只包含一个可执行的程序。(注意软件和程序是不一样的概念。)
对于同一个链接目标(例如.exe文件)而言,相同名称的符号只能出现一次,否则出现链接错误。于是对应的若干个源文件中任何相同函数只能出现一次,main也不例外。
如果是编译成多个可执行文件,那么之间的源文件可以完全没关系,这样就可以有多个main函数(当然一个程序里面还是只能有一个)。
也可能一个main也没有,例如对于像.dll这样的库文件而言。
====
[原创回答团]
⑥ c语言函数
C语言中,参数传递是单向按值传递,相当于将a和b的值赋值给x,y,虽然fun函数中,x和y的值交换了,但是main函数中,a和b的值没有发生变化。
如果想在自定义函数中改变a和b的值,必须交换其地址,借助指针,间接交换他们的值,程序改为如下即可:
#include <stdio.h>
void fun(int *x,int *y) // 定义形参为指针类型
{
int t;
t=*x;*x=*y;*y=t;
}
main()
{int a=5,b=6;
fun(&a,&b); // 交换存放地址
printf("%d,%d\n",a,b);
}
⑦ c语言的函数头
在一个函数定义中,函数体之前的所有部分称为函数头,它给出了该函数的返回类型、每个参数的次序和类型等函数原型信息,所以当没有专门给出函数原型说明语句时,系统就从函数头中获取函数原型信息。
一个函数的原型语句就是其函数头的一个拷贝,当然要在最后加上语句接上结束符分号。函数原型语句与函数头也有细微的差别,在函数原型语句中,其参数表中的每个参数允许只保留参数类型,而省略参数名,并且若使用参数名也允许与函数头中对应的参数名不同。
全文如下:
一)、定义格式
<类型名> <函数名> ([<参数表>]) <函数体>
<类型名>为系统或用户已定义的一种数据类型,它是函数执行过程中通过return语句要求返回的值的类型,又称为该函数的类型。当一个函数不需要通过return语句返回一个值时,称为无返回值函数或无类型函数,此时需要使用保留字void作为类型名。当类型名为int时,可以省略不写,但为了清楚起见,还是写明为好。
<函数名>是用户为函数所起的名字,它是一个标识符,应符合C++标识符的一般命名规则,用户通过使用这个函数名和实参表可以调用该函数。
<参数表>又称形式参数表,它包含有任意多个(含0个,即没有)参数说明项,当多于一个时其前后两个参数说明项之间必须用逗号分开。每个参数说明项由一种已定义的数据类型和一个变量标识符组成,该变量标识符成为该函数的形式参数,简称形参,形参前面给出的数据类型称为该形参的类型。一个函数定义中的<参数表>可以被省略,表明该函数为无参函数,若<参数表>用void取代,则也表明是无参函数,若<参数表>不为空,同时又不是保留字void,则称为带参函数。
<函数体>是一条复合语句,它以左花括号开始,到右花括号结束,中间为一条或若干条C++语句。
在一个函数的参数表中,每个参数可以为任一种数据类型,包括普通类型、指针类型、数组类型、引用类型等,一个函数的返回值可以是除数组类型之外的任何类型,包括普通类型、指针类型和引用类型等。另外,当不需要返回值时,应把函数定义为void类型。
二)、定义格式举例
(1) void f1() {...}
(2) void f2(int x) {...}
(3) int f3(int x,int* p) {...}
(4) char* f4(char a[]){...}
(5) int f5(int& x,double d) {...}
(6) int& f6(int b[10], int n) {...}
(7) void f7(float c[][N], int m, float& max) {...}
(8) bool f8(ElemType*& bt, ElemType& item) {...}
在第一条函数定义中,函数名为f1,函数类型为void,参数表为空,此函数是一个无参无类型函数。若在f1后面的圆括号内写入保留字void,也表示为无参函数。
在第二条函数定义中,仅带有一个类型为int的形参变量x,该函数没有返回值。
在第三条函数定义中,函数名为f3,函数类型为int,函数参数为x和p,其中x为int型普通参数,p为int*型指针参数。
在第四条函数定义中,函数名为f4,函数类型为char*,即字符指针类型,参数表中包含一个一维字符数组参数。注意:在定义任何类型的一维数组参数时,不需要给出维的尺寸,当然给出也是允许的,但没有任何意义。
在第五条函数定义中,函数名为f5,返回类型为int,该函数带有两个形参,一个为 整型引用变量x,另一个为双精度变量d。
在第六条函数定义中,函数名为f6,函数类型为int&,即整型引用,该函数带有两个形参,一个是整型数组b,另一个是整型变量n。在这里定义形参数组b所给出的维的尺寸10可以被省略。
在第七条函数定义中,函数名为f7,无函数类型,参数表中包含三个参数,一个为二维单精度型数组c,第二个为整型变量m,第三个为单精度引用变量max。注意:当定义一个二维数组参数时,第二维的尺寸必须给出,并且必须是一个常量表达式,第一维尺寸可给出也可不给出,其作用相同。
在第八条函数定义中,函数名为f8,返回类型为bool,即逻辑类型,该函数带有两个参数,一个为形参bt,它为ElemType的指针引用类型,另一个为形参item,它是ElemType的引用类型,其中ElemType为一种用户定义的类型或是通过typedef语句定义的一个类型的别名。
三)、有关函数定义的几点说明
1. 函数原型语句
在一个函数定义中,函数体之前的所有部分称为函数头,它给出了该函数的返回类型、每个参数的次序和类型等函数原型信息,所以当没有专门给出函数原型说明语句时,系统就从函数头中获取函数原型信息。
一个函数必须先定义或声明而后才能被调用,否则编译程序无法判断该调用的正确性。一个函数的声明是通过使用一条函数原型语句实现的,当然使用多条相同的原型语句声明同一个函数虽然多余但也是允许的,编译时不会出现错误。
在一个完整的程序中,函数的定义和函数的调用可以在同一个程序文件中,也可以处在不同的程序文件中,但必须确保函数原型语句与函数调用表达式出现在同一个文件中,并且函数原型语句出现在前,函数的调用出现在后。
通常把一个程序中用户定义的所有函数的原型语句组织在一起,构成一个头文件,让该程序中所含的每个程序文件的开始(即所有函数定义之前)包含这个头文件(通过#include命令实现),这样不管每个函数的定义在哪里出现,都能够确保函数先声明后使用(即调用)这一原则的实现。
一个函数的原型语句就是其函数头的一个拷贝,当然要在最后加上语句接上结束符分号。函数原型语句与函数头也有细微的差别,在函数原型语句中,其参数表中的每个参数允许只保留参数类型,而省略参数名,并且若使用参数名也允许与函数头中对应的参数名不同。
2. 常量形参
在定义一个函数时,若只允许函数体访问一个形参的值,不允许修改它的值,则应把该形参说明为常量,这只要在形参说明的前面加上const保留字进行修饰即可。如:
void f9(const int& x, const char& y);
void f10(const char* p, char key);
在函数f9的函数体中只允许使用x和y的值,不允许修改它们的值。在函数f10的函数体中只允许使用p所指向的字符对象或字符数组对象的值,不允许修改它们的值,但在函数体中既允许使用也允许修改形参key的值。
3. 缺省参数
在一个函数定义中,可根据需要对参数表末尾的一个或连续若干个参数给出缺省值,当调用这个函数时,若实参表中没有给出对应的实参,则形参将采用这个缺省值。如:
void f11(int x, int y=0) {...}
int f12(int a[], char op='+', int k=10) {...}
函数f11的定义带有两个参数,分别为整型变量x和y,并且y带有缺省值0,若调用该函数的表达式为f11(a,b),将把a的值赋给x,把b的值赋给y,接着执行函数体;若调用该函数的表达式为f11(a+b),则也是正确的调用格式,它将把a+b的值赋给x,因y没有对应的实参,将采用缺省值0,参数传送后接着执行函数体。
函数f12的定义带有三个参数,其中后两个带有缺省值,所以调用它的函数格式有三种,一种只带一个实参,用于向形参a传送数据,后两个形参采用缺省值,第二种带有两个实参,用于分别向形参a和op传送数据,第三个形参采用缺省值,第三种带有三个实参,分别用于传送给三个形参。
若一个函数带有专门的函数原型语句,则形参的缺省值只能在该函数原型语句中给出,不允许在函数头中给出。如对于上述的f11和f12函数,其对应的函数原型语句分别为:
void f11(int x, int y=0);
int f12(int a[], char op='+', int k=10);
函数定义应分别改写为:
void f11(int x, int y) {...}
int f12(int a[], char op, int k) {...}
4. 数组参数
在函数定义中的每个数组参数实际上是指向元素类型的指针参数。对于一维数组参数说明:
<数据类型> <数组名>[]
它与下面的指针参数说明完全等价:
<数据类型> *<指针变量名>
其中<指针变量名>就是数组参数说明中的<数组名>。如对于f12函数定义中的数组参数说明int a[],等价于指针参数说明int* a。也就是说,数组参数说明中的数组名a是一个类型为int*的形参。注意:在变量定义语句中定义的数组,其数组名代表的是一个数组,它的值是指向第一个元素的指针常量,这与数组形参的含义有区别。
对于二维数组参数说明:
<数据类型> <参数名>[][<第二维尺寸>]
它与下面的指针参数说明完全等价:
<数据类型> (*<参数名>)[<第二维尺寸>]
如对于f7函数定义中的二维数组参数说明float c[][N],等价于指针参数说明float(*c)[N]。
5. 函数类型
当调用一个函数时就执行一遍循环体,对于类型为非void的函数,函数体中至少必须带有一条return语句,并且每条return语句必须带有一个表达式,当执行到任一条return语句时,将计算出它的表达式的值,结束整个函数的调用过程,把这个值作为所求的函数值带回到调用位置,参与相应的运算;对于类型为void的函数,它不需要返回任何函数值,所以在函数体中既可以使用return语句,也可以不使用,对于使用的每条return语句不允许也不需要带有表达式,当执行到任一条return语句时,或执行到函数体最后结束位置时,将结束函数的调用过程,返回到调用位置向下继续执行。
6. 内联函数
当在一个函数的定义或声明前加上关键字inline则就把该函数声明为内联函数。计算机在执行一般函数的调用时,无论该函数多么简单或复杂,都要经过参数传递、执行函数体和返回等操作。若把一个函数声明为内联函数后,在程序编译阶段系统就有可能把所有调用该函数的地方都直接替换为该函数的执行代码,由此省去函数调用时的参数传递和返回操作,从而加快整个程序的执行速度。通常可把一些相对简单的函数声明为内联函数,对于较复杂的函数则不应声明为内联函数。从用户的角度看,调用内联函数和一般函数没有任何区别。下面就是一个内联函数定义的例子,它返回形参值的立方。
inline int cube(int n)
{
return n*n*n;
}
⑧ C语言中函数的作用
C语言中的函数的作用是可以将一段经常需要使用的代码封装起来,在需要使用时可以直接调用。
示例:
语言的函数定义和函数声明
#include<stdio.h>
//使用函数前,需要在main函数前对使用的函数进行声明
int getMax(int, int);
void main() {
int t=getMax(12, 21);
printf("%d ", t);
getchar();
}
int getMax(int a, int b) {
if (a > b) {
return a;
}
else {
return b;
}
}
(8)c语言的函数扩展阅读
scanf 函数
函数原型:int scanf(char *format [,argument,...])
功能:从标准输入设备(一般指键盘)实现格式化输入
返回值:成功返回读入的数据项个数
函数参数:format 格式化字符串
argument 输入数据项的地址列表
常用格式类型参考printf函数的个格式类型
用法举例:
从标准输入设备中输入一个整数到整形变量a中,输入一个浮点数到浮点型变量b中
int a=0;
float b=0;
scanf("%d%f",&a,&b);
上面程序执行后,从键盘输入: 19 18.6 ,程序将 19赋值给变量a, 18.6赋值给变量b 。
⑨ c语言定义函数是什么
c语言定义函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。
接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明,根据这一点可以将函数分为有参函数和无参函数。
函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。函数可以提前保存起来,并给它起一个独一无二的名字,只要知道它的名字就能使用这段代码。
C语言特点及运用范围:
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。
C语言特点:简洁的语言、具有结构化的控制语句、丰富的数据类型、丰富的运算符、可对物理地址进行直接操作、代码具有较好的可移植性、可生成高质量、目标代码执行效率高的程序。
C语言是一门面向过程的计算机编程语言,C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。