函数1
函数
维基百科中对C语言中函数的定义是:子程序
在计算机科学中,子程序是指在一个大型程序中的某部分代码,由一个或多个语句块组成。它负责完成某项特定的任务,而且相较于其他代码。具备相对的独立性
一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库
C语言中函数的分类
1.库函数
2.自定义函数
库函数
在程序员开发时可能都用得上的一些具有一定功能的代码,为了支持可移植性和提高程序的效率,所以C语言的基础库中提供了一系列类似的库函数,方便程序员进行软件开发,推荐一个查看库函数的网站:www.cplusplus.com、http://en.cppreference.com
软件:MSDN(Microsolf Developer Network)
c语言中常用的库函数都有:
1.IO函数(IO:stdin and stdout)
2.字符串操作函数
3.内存操作函数
4.时间/日期函数
5.数字函数
我们常写的stdio.h就是IO函数所在的头文件
以memset函数为例,上代码:
#include<stdio.h>
void* memset(void* ptr,int value,size_t num);
int main(void)
{
char arr[24]="LOVEZSQ is My PIN!";
memset(arr,'*',7);//将前七个元素改成'*'
printf("%s\n", arr);
return 0;
}
总结出memse函数的模板就是:
void* memset(void* ptr,int value,size_t num)
//memset——memory(内存),set(设置),将输入的值改变成自己想要改成的值
自定义函数
re_type fun_name(paral,*) int add(int x,int y)
{ {
statement;//函数体系 int z=0;
z = x+y;
return z;//最后将结果z返回
} }
re_type//返回类型
fun_name//函数名
paral//函数参数
函数体系:交代函数的实现
void:没有返回值
没有返回值的函数:
/*交换数值.c*/
void Swap(int*px,int*py)//利用指针变量
{
int tamp=0;
tamp=*px;
*px=*py;
*py=tamp;
}
函数的参数
实际参数(实参):真实传给函数的参数。实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传给形参。
形式参数(形参):函数名后括号里的变量。因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。
#include<stdio.h>
int add(int x, int y)//自定义的加法函数,x、y都是形参
{
int z = 0;
z = x + y;
return z;
}
int main(void)
{
int a = 10;
int b = 20;//a、b均为实参,且有确切的值
int sum = add(a, b);//引用代码
printf("%d\n", sum);
return 0;
}
谨记:当实参传给形参时(形参实例化),形参其实是实参的一份临时拷贝,对形参的修改不会影响实参
函数的调用
传值调用:函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。
传址调用:
把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
这种传参方式可以让函数和函数外部的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量
传值调用:
#include<stdio.h>
int add(int x, int y)//自定义的加法函数,x、y都是形参
{
int z = 0;
z = x + y;
return z;
}
传址调用:
/*交换数值.c*/
void Swap(int*px,int*py)//利用指针变量
{
int tamp=0;
tamp=*px;
*px=*py;
*py=tamp;
}
函数的嵌套调用与链接访问
函数与函数之间是可以有机组合的
嵌套调用
可以理解为一个函数调用另一个函数。上代码:
#include<stdio.h>
void new_line()
{
printf("Hehe\n");
}
void there_line
{
new_line();
}
int main(void)
{
there_line();
return 0;
}
链接访问
把一个函数的返回值作为另一个函数的参数。上代码:
#include<stdio.h>
int mian(void)
{
printf("%d\n", strlen("abc"));
printf("%d\n", printf("%d\n", printf("%d\n", 43)));
return 0;
}
运行结果相当的amazing啊!显然printf()函数返回值是打印字符的个数(包括换行符)
函数的声明与定义
函数的声明
1.告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,无关紧要
2.函数的声明一般出现在函数的使用之前。要先声明再使用
3.函数的声明一般要放在头文件中
函数的定义
函数的定义是指函数的具体实现,交代函数的功能实现
初学者喜欢将所有的代码写在同一个源文件里
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律