函数概述.

目录

一、函数

1.1 函数概述

1.2 函数特性

1.3 字符串标准库函数

1.4 数学标准库函数

二、函数应用

2.1 函数组成

2.2 函数模型

三、函数和变量的作用范围

3.1 函数作用范围

3.1.1 全局函数

3.1.2 局部函数

3.2 变量作用范围

3.2.1 全局变量

3.2.2 局部变量

3.2.3静态局部变量

四、递归函数

五、C语言开辟内存的五大区域

5.1栈区

5.2堆区

5.3全局变量区

5.4常量区

5.5程序代码区


一、函数

1.1 函数概述

组成:函数是程序最基本的组成单元,是指完成特定功能的程序代码

主次:主函数、子函数

分类:库函数(API函数)、自定义函数

1.2 函数特性

独立性:函数与函数之间彼此独立

模块化:一个函数封装成一个函数

通用性:函数不是为了解决一个问题,而是为了解决一类问题

1.3 字符串标准库函数 <string.h>

字符串长度计算函数(strlen)

字符串对比函数(strcmp)

字符串拼接函数(strcat)

字符串复制函数(strcpy)

1.4 数学标准库函数<math.h>

计算绝对值函数(abs)

计算次方值函数(pow)

计算平方根函数(sqrt)

余弦函数值计算函数(cos)

正弦函数值计算函数(sin)

二、函数应用

2.1 函数组成

        函数三要素:函数定义、函数声明、函数调用

2.2 函数模型

        格式:函数类型 函数名(形参)

        {

              函数代码;

        }

        函数类型:返回值的数据类型

        形参:详称为形式参数,是外部参数传给函数的入口

        一个函数有函数类型,那么这个数必须有返回值

        一个函数有形参,那么这个函数在调用的时候必须有实参向形参传递数据

        例:使用函数实现判断153是否是水仙花数

#include<stdio.h>
int Shui_XianHua(int a,int b,int c);
 
int main()
{ 	
	int num,a,b,c;
	printf("输入数字:");
	scanf("%d",&num);
	a=num/100;
	b=num%100/10;
	c=num%10;
	if(Shui_XianHua(a,b,c)==1)
	{
		printf("%d%d%d是水仙花数\n",a,b,c);
	}
	else
	{
		printf("%d%d%d不是水仙花数\n",a,b,c);
	}
}

int Shui_XianHua(int a,int b,int c)
{
	int flag;
	if(a*a*a+b*b*b+c*c*c==a*100+b*10+c)
	{
	return 1;
	}
	else{
	return 0;
	}	
}

练习:使用子函数编写一个200~400之间不能被3整除的数

//1.无返回值,无形式参数
#include<stdio.h>
int sum();

int main()
{ 	
	sum();
}
void sum()
{
	int i,s=0;
	for(i=200;i<=400;i++)
	{
		if(i%3!=0)
		{
			s+=i;
		}	
	}
	printf("和为:%d\n",s);
}
//2.有返回值,无形式参数
#include<stdio.h>
int sum();
 
int main()
{ 	
	printf("和为:%d\n",sum());	
}
int sum()
{
	int i,s=0;
	for(i=200;i<=400;i++)
	{
		if(i%3!=0)
		{
			s+=i;
		}	
	}
	return s; 
}
//3.有返回值,有形式参数
#include<stdio.h>
int sum(int a,int b,int c);
 
int main()
{ 	
	int a,b,c;
	printf("输入范围最大值、最小值、除数\n");
	scanf("%d%d%d",&a,&b,&c);
	printf("和为:%d\n",sum(a,b,c));	
}
int sum(int a,int b,int c)
{
	int i,s=0;
	for(i=a;i<=b;i++)
	{
		if(i%c!=0)
		{
			s+=i;
		}	
	}
	return s; 
}

三、函数和变量的作用范围

3.1 函数作用范围

3.1.1 全局函数

        全局函数是指这个函数能被工程任意源文件(.c)所调用。

3.1.2 局部函数

        局部函数是指这个函数只能被所在的源文件使用。

       函数前加extern表示函数为全局函数,加static表示为局部函数,二者都不加则默认为全局函数。

3.2 变量作用范围

3.2.1 全局变量

        全局变量是指在函数体外面定义的变量,若不赋值则全局变量的初始值为0。

        作用时间:从定义变量开始一直到程序结束

        作用范围:整个工程

3.2.2 局部变量

        局部变量是指在函数内定义的变量

        作用时间:函数开始到函数结束

        作用范围:函数内部

#include <stdio.h>
int c;  //全局变量
int a = 20;
void fun()
{
	static int a = 0; 
	//静态变量:有着全局变量的生命周期和局部变量的作用范围
	int b = 0;
	b++;
	a++;
	c++;
	printf("%d  ",a);// 1 2 3   
	printf("%d  ",b);// 1 1 1
	printf("%d\n",c);// 1 2 3
}
int main() 
{    
	fun();
	printf("\n");
	fun();
	printf("\n");
	fun();
	printf("\n");
	printf("a = %d\n",a);
}

3.2.3 静态局部变量

        静态局部变量是局部变量的特殊例子  static int a;

        作用时间:从定义变量开始一直到程序结束

        作用范围:函数内部

四、递归函数

        在函数内部中,自己调用自己的函数称为递归函数

        例:有一对兔子,从出生后第3个月开始,每一个月生一对兔子,新生的小兔子在长到第3个月开始每个月又生一对兔子,假如兔子不死,问每个月的兔子总数是多少。

#include<stdio.h>

int jie(int n);
 
int main()
{ 	
	int a;
	printf("输入月份:");
	scanf("%d",&a);
	printf("%d的兔子总数为:%d",a,jie(a));	
}
int jie(int n)
{	
	int sum;
	if(n>2)   
	{
		sum=jie(n-1)+jie(n-2);
	}
	else 
	{
		sum=1;
	}
	return sum; 
}

五、C语言开辟内存的五大区域

5.1 栈区

      在执行函数时,函数(包括main函数)内局部变量以及函数的形参的存储单元空间都是在栈区中创建,栈区中的变量控制由编译器自动开辟和在函数运行结束之后自动释放。

5.2 堆区

      堆区也称动态内存分配区。堆区的空间程序在运行的时候由程序员使用“malloc”函数去申请任意大小的内存空间,空间一旦申请完成,需要程序员自己负责在适当的时候使用“free”函数去释放内存,如果开辟后没有进行释放,到整个工程结束后自动释放。

5.3 全局变量区

      全局变量区也称为全局/静态区,主要是存放全局变量和静态变量。全局变量区中的变量由编译器自动开辟和当整个工程结束之后自动释放。

5.4 常量区

      常量区是一块比较特殊的数据存储区,在程序运行的过程中,只允许程序去访问,不允许程序进行修改(只读)。常量区主要存放的是文字常量。

5.5 程序代码区

      程序代码区主要是用于存放二进制代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值