全寝室最接地气的C函数基础介绍,此处对于函数的相关知识点做一些简要的介绍,作者实属初学,写博客也是作者学习的一个过程,难免文章中有内容理解不到位或者有不当之处,还请朋友们不吝指正,希望大家多多给予支持,赠人玫瑰,手有余香!
百度百科对函数的定义:子程序
为了支持可移植性和提高程序的效率,所以C语言的基础库提供了一系列库函数,库函数是对实现某种特定功能的代码的封装,当用户需要实现这种功能时,只需要调用此库函数即可,方便程序员进行软件开发。
常用的库函数可简单的分为:IO函数,字符串操作函数,字符操作函数,内存操作函数,时间/日期函数,数学函数等等。
这里我们主要提供两个网站提供用户学习库函数。
(http://www.cplusplus.com)
(http://en.cppreference.com)
自定义函数是程序员根据所要完成的功能,自己写出的源代码实现该功能。
自定义函数和库函数一样,具有函数名,返回值类型,和函数参数。
代码示例1:写一个函数找出两整数的最大值。
int get_max(int x, int y)
{
return (x > y ? x : y);
}
int main()
{
int a, b;
scanf("%d%d", &a, &b);
int MAX = get_max(a, b);
printf("MAX = %d\n", MAX);
return 0;
}
10 20
MAX = 20
请按任意键继续. . .
代码示例2:写一个自定义函数交换两整型内容
void swap(int * x, int * y)
{
int temp = *x;
*x = *y;
*y = temp;
}
int main()
{
int a, b;
scanf("%d%d", &a, &b);
printf("交换前:a = %d b = %d\n", a, b);
swap(&a, &b);
printf("交换后:a = %d b = %d\n", a, b);
return 0;
}
10 20
交换前:a = 10 b = 20
交换后:a = 20 b = 10
请按任意键继续. . .
实际传递给函数的参数,可以是变量,常量,表达式,函数,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。
形式参数是指被调函数的函数名后括号里的变量,形参变量只有被调用时才分配内存空间储存,在未出调用该函数时,它们并不占内存中的存储单元,因此被称为形式参数或虚拟参数。且函数调用完成之后就即时的自动销毁,因此形参只在被调函数内有效。
形参与实参的联系:当函数调用时,实参传递给形参,形参是实参的一份临时拷贝,所以对形参的修改不会影响实参。
实参单元与形参单元是不同的单元。调用结束后,形参单元被释放,函数调用结束返回主调函数后则不能再使用该形参变量。实参单元仍保留并维持原值。因此,在执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数中实参的值。
定义函数后,我们需要调用此函数才能执行到这个函数里的代码段。这和main()函数不一样,main()为编译器设定好自动调用的主函数,无需人为调用,我们都是在main()函数里调用别的函数,一个 C 程序里有且只有一个main()函数。
函数的形参和实参分别占用不同的内存空间,且形参随着被调函数的结束而即时的销毁,所以对形参的修改不会影响实参。
代码举例:
void swap(int x, int y)
{
int temp = x;
x = y;
y = temp;
}
int main()
{
int a, b;
scanf("%d%d", &a, &b);
printf("交换前:a = %d b = %d\n", a, b);
swap(a, b);
printf("交换后:a = %d b = %d\n", a, b);
return 0;
}
10 20
交换前:a = 10 b = 20
交换后:a = 10 b = 20
请按任意键继续. . .
传址调用,顾名思义就是把地址传递给被调函数,(实参与形参”不同级别“)。
代码示例:
void swap(int * x, int * y)
{
int temp = *x;
*x = *y;
*y = temp;
}
int main()
{
int a, b;
scanf("%d%d", &a, &b);
printf("交换前:a = %d b = %d\n", a, b);
swap(&a, &b);
printf("交换后:a = %d b = %d\n", a, b);
return 0;
}
10 20
交换前:a = 10 b = 20
交换后:a = 20 b = 10
请按任意键继续. . .
如果是调用无参函数,则不能加上“实参”,但括号不能省略。
void test()
{
}
int main()
{
// 函数的调用
test(); // right, 圆括号()不能省略
test(250); // error, 函数定义时没有参数
return 0;
}
#include
int get_max(int x, int y); // 函数的声明,分号不能省略
// int get_max(int, int); // 另一种方式
int main()
{
int a = 10, b = 25, MAX = 0;
MAX = get_max(a, b); // 函数的调用
printf("MAX = %d\n", MAX);
return 0;
}
// 函数的定义
int max(int x, int y)
{
return x > y ? x : y;
}
这里我们简单介绍一下return与exit的区别与联系:
联系:在main函数中,exit和return的作用是一致的。
区别:在子函数中调用return只是代表子函数终止了,在子函数中调用exit,那么程序终止。
OK!!!观众老爷们,这里只是介绍了函数的入门知识,如果朋友们觉得有一点点作用的话,希望朋友们能够给予小菜鸟一点支持!后续继续给朋友们带来更好的博文,还希望朋友们能够继续关注,小菜鸟致力于把自己的学习经验与个人理解更多的分享给大家,望大家喜欢与指正。谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢