C语言的函数

C语言·函数

重点

  • 函数的声明、定义、和返回值
  • 函数的调用:函数的一般调用、函数的嵌套
  • 常用Linux C系统中的常用函数

一、函数的声明、定义、和返回值

函数的定义如下:
调用函数必须遵循“定义在先、使用在后”的原则。
函数定义的一般格式:
类型说明符 函数名(类型说明符形参变量1,类型说明符形参变量2,…)

{

声明语句部分;

执行语句部分;

}

如:

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}

int test()
{
	声明语句部分;

	执行语句部分;
}

函数的定义需要定义函数头和函数体两部分,下面分别介绍在定义两部分时的注意事项。

1.函数头
包括函数名、函数的类型及形式参数表
(1)函数名。用标识符表示,用来标识一个函数的名字,函数名后面必须有一对圆括号。除main函数外,其他函数可以按标识符规则任意命名,程序风格要求函数命名是能反映函数功能、有助于记忆的标识符。
(2)函数类型。函数名前的函数类型是指函数返回值的类型。如果函数是整型,int可省略不写;如果函数无返回值,以void类型明示。如果函数是无参函数,而且在调用后没有返回值,C语言规定应当将函数类型说明为void型(空值类型),否则,可能导致程序出错。
(3)形式参数表。圆括号内为形式参数列表部分,其中的参数称为形式参数,它包括函数的自变量部分。每个参数前都应用相应的类型标识符对参数进行说明,有多个参数时用逗号分开。如果是无参数函数,形式参数列表部分为空,但一对()不能省略
2.函数体
函数体是函数头下面最外层一对花括号内的代码,它是由一系列语句构成的,用以实现数的功能,函数体内可以有函数说明、变量说明及可执行语句
函数体也可以是一对空的花括号,例如:
 void function (void)


这是一个“空函数”,调用它并不产生任何有效的操作,void就是没有返回值的函数。

例如:定义一个函数用于求两个数中的最大值
#include "stdafx.h"  
int max(int n1,int n2)  
{  
    return (n1>n2?n1:n2);  
}  
int _tmain(int argc, _TCHAR* argv[])  
{  
    int max (int n1,int n2);  
    int num1,num2;  
    printf("请输入两个数,并用英文的逗号隔开:\n");  
    scanf("%d,%d",&num1,&num2);  
    printf("max=%d\n",max(num1,num2));  
    getchar();//VS2010中需要加断点。  
    return 0;  
}  

运行结果如下:


二、函数的调用

调用函数时一定切记“先声明,后使用”的原则。

函数的声明:

函数类型  函数名 ();

函数的调用一般为:

函数名([实际参数列表])。

main函数可以调用其他函数,但是不可调用main函数。

调用函数时,C语言和Java、C#的区别在于:C语言有声明函数部分。

例如:

在C#和Java中

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
	Test();
	getchar();
	return 0;
}
void Test()
{
	printf("这是一个函数");
}

这样写结果是可以运行正确结果的。

而在C语言中会报错


这是因为C语言调用函数的代码块没有声明函数部分

是先执行main函数,而第一句就是Test();编译器并没有找到Test(),所以会报错。

出现这样的情况,有两种解决办法。

1、将Test的代码块放在main函数的前面

#include "stdafx.h"

void Test()
{
	printf("这是一个函数");
}

int _tmain(int argc, _TCHAR* argv[])
{
	Test();
	getchar();
	return 0;

}

2、调用函数是在前面加上去声明函数部分就可以啦。

#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
	void Test();//声明函数部分
	Test();
	getchar();
	return 0;

}
void Test()
{
	printf("这是一个函数");
}

这样就可以执行出正确结果啦。


三、常用Linux C系统中的常用函数

这里重点掌握:字符串处理函数、常用数学函数、日期时间函数

字符串处理函数:

1. index()查找字符串中第一个出现的指定字符

    函数原型:char* index( const char*s,int  c);

    函数说明: index()用来找出参数s字符串的第一个出现的参数c地址,然后将该字符出现的地址返回。字符串结束字符(NULL)也视为字符串的一部分。
    函数返回值:如果找到指定的字符,则返回该字符所在的地址,否则返回0。

2. strcat()连接两个字符串

函数原型:char* strcat(char*dest, const char*src);
函数说明: strcat()会将参数src字符串复制到参数dest所指的字符串尾。第一个参数dst要有足够的空间来容纳要复制的字符串。
函数返回值:返回参数dest的字符串起始地址。

3.strcmp()比较字符串

函数原型: int strcmp( ( const char +s1, const char*s2)
函数说明:strp()用来比较参数sl和s2字符串。字符串的大小比较以ASCⅡ码表上的顺序来决定,此顺序亦为字符的值。
函数返回值:若参数sl和s2字符相同则返回0。s1若大于s2则返回大于O的值。s1若小于s2则返回小于0的值

 4. strcpy()复制字符串

函数原型:char* strcpy(char*dest, const char*src);
函数说明: strep()会将参数src字符串复制至参数dest所指的地址函数。
返回值:返回参数dest的字符串起始地址。
附加说明:如果参数dest所指的内存空间不够大,可能会造成缓冲溢出( Buffer Overlow)的错误。

常用数学函数:


1.abs()计算整形数的绝对值

需要头文件:#include< stdlib.h>
函数原型: int abs(int j);
函数返回值:返回参数j的绝对值结果。

2.cos()取余玄函数值

需要头文件: #include <math. h>
函数原型: double cos(double x);
函数返回值:返回-1至1之间的计算结果。
函数说明:cos()用来计算参数x的余玄函数值,然后将结果返回。

3.ceil()取不小于参数的最小整型数 

需要头文件: #include <math. h>

函数原型: double ceil( double x);

函数返回值:返回不小于参数x的最小整数值。

函数说明:ceil()会返回不小于参数x的最小整数值,结果以 double形态返回。

 4.exp()计算指数

需要头文件:#include<math.h>
函数原型: double exp( double x);
函数返回值:返回e的x次方计算结果。
函数说明:exp()用来计算以e为底的x次方值,即ex值,然后将结果返回。

 5.sqrt()计算平方根值

需要头文件:# Include<math.h>
函数原型: double sqrt( double x);
函数返回值:返回参数x的平方根值。错误代码:EDOM参数x为负数。
函数说明:sqrt()用来计算参数x的平方根,然后将结果返回。参数x必须为正数。

常用日期时间函数:

 1.time()取得目前的时间

函数原型: time_t time(time_t*t);
函数返回值:成功则返回秒数,失败则返回(-1)值。
函数说明:此函数会返回公元1970年1月1日的UTC时间从0时0分0秒起到现在所经过的秒数。如果t为空指针的话,此函数也会将返回值存到t指针所指的内存。

2. ctime()将时间和日期以字符串格式表示

函数原型:char ctime (const time_t *timep);
函数说明: ctime()将参数 time所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形式返回。
函数返回值:返回一个字符串表示目前当地的时间日期。这个字符串的长度是固定的为26。例如: Thu Dec 7 14:58:59 2000。

 3. mtime()取得目前的时间和日期

函数原型:struct tm *gmtime(const time_t timep );

函数说明: glime()将参数 imep所指的tmet结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。

函数返回值:返回结构tm代表目前的UTC时间。

 4. diffie()计算时间差距

函数原型: double difftime(time_ t time,time_ t time());
函数说明: difftime()用来计算参数time和time()所代表的时间差距,结果以 doubl型精确值返回。两个参数的时间皆是以1970年1月1日0时0分0秒算起的UTC时间。
函数返回值:返回精确的时间差距秒数。







转载于:https://www.cnblogs.com/xiaoheima/p/9536316.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值