1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【C语言】函数基本知识详细讲解(库函数 自定义函数 参数 函数的套用.....

【C语言】函数基本知识详细讲解(库函数 自定义函数 参数 函数的套用.....

时间:2018-12-05 09:39:38

相关推荐

【C语言】函数基本知识详细讲解(库函数 自定义函数 参数 函数的套用.....

接着上次的数组的基本知识,让我们来简单了解C语言里的函数。

目录

函数的定义

库函数

自定义函数

函数的参数

函数的调用:

函数的嵌套调用和链式访问

函数的声明和定义

函数递归.

总结

函数的定义

函数就是一个大型程序中的某部分代码,由一个或多个语句块组成。负责完成某项特定任务,相较于其他代码,更具有独立性。

一般会有输入参数并有返回值,提供了对过程的封装和细节的隐藏。这些代码通常被集称为软件库。

库函数

C语言为我们提供了上百个可调用的库函数,例如与字符串有关的 strlen, strcat, strlwr . 或是我们刚接触C语言时候用到的 printf, scanf, 这些都是c语言为我们提供的。在我们使用某一库函数的时候,需要在程序中嵌入(#include<>) 该函数所需要的头文件。

这也就是为什么我们在代码开头都需要写上#include <stdio.h>,因为 printf, scanf,getchar,gets,putchar()这些函数 (也称作标准I/O函数),都是在stdio头文件中

2.常用的库函数有:

(1)IO函数

Input output(输入输出函数)

(2)字符串操作函数

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

(3)字符操作函数

(4)内存操作函数

例:strcpy函数

原型:strcpy(str1,str2);

功能:将字符串str2复制到字符串str1中,并覆盖str1原始字符串,可以用来为字符串变量赋值

返回:str1

注意:1)字符串str2会覆盖str1中的全部字符,2)字符串str2的长度不能超过str1

char str1[] = "We are csdn!";char str2[] = "Hello!";strcpy_s(str1, str2); //str = Hello!

自定义函数

1.认识自定义函数

自定义函数和库函数一样,有函数名,返回值和函数类型。但是不一样的是这些都是我们自己来设计,有很大的发挥空间。

比如说这样我需要写一个计算输入n,求1到n之间数字的和。

#include<stdio.h>//开始自定义一个函数int sum1(int n){int sum=0;for(int i=0;i<=n;i++){sum = sum + i;}return sum;//这里返回值是什么 这个自定义函数最终的得到值就是什么}//定义函数结束//开始使用主函数进行调用int main(){int n=0,sum=0;scanf("%d",&n);sum=sum1(n) //进行函数的调用printf("%d",sum);getchar();return 0;}

函数的参数

实际参数(实参): 真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何种类型量,在进行函数调用时,他们都必须有确定的值(可以是表达式,但是必须有定值),一边把这些值传送给形参。形式参数(形参):形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),叫做形式参数。形式参数当函数调用完成后就自动销毁了。因此形式参数只在函数内有效关系当实参传给形参时,形参其实是实参的一份临时拷贝,对形参的修改时不会改变实参的

函数的调用:

1.传址调用

(1)传址调用时把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式;

这种传参方式可以让函数内部和函数外部的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量

2.传值调用

(1)函数的形参和实参分别占有不同的内存块,对形参的修改不会影响实参。

函数的嵌套调用和链式访问

嵌套调用

#include<stdio.h>void new_line(){printf("hehe\n");}void three_line(){int i=0;for(i=0;i<3;i++){new_line();//调用函数}}int main(){three_line();//调用函数return 0;}

2.链式访问

把一个函数的返回值,作为另一个函数的参数。

#include<stdio.h>#include<string.h>int main(){int len =0;//1len=strlen("abc");printf("%d\n",len);//2printf("%d\n",strlen("abc"));return 0;}

函数的声明和定义

函数的定义:定义在一个全新的源文件中。函数的定义是值函数的具体实现,交代函数的功能实现。

函数的声明:声明在一个全新的头文件(.h)中。

引用自己定义的文件用:#include“add.h”

1.函数的定义

#include<stdio.h>Add(int ,int );//函数声明int main(){int a=10;int b=20;int sum=0;//函数调用sum=Add(a,b);printf("%d",sum);return 0;}//函数的定义int Add(int x,int y){int z=x+y;return z;}

2.函数的声明

告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,无关紧要。

函数的声明一般出现在函数的使用之前,要满足先声明后使用。

函数的声明一般要放在头文件中。

//#ifndef :为定义一个文件,若该文件已被使用 ,则声明无效#ifndef _ADD_H_#define _ADD_H_//函数的声明int Add(int x,int y);

函数递归.

递归的条件必须要存在限制条件,当满足这个限制条件时,递归便不再继续。每次递归调用之后越来越接近这个条件递归
程序调用自身的编程技巧称为递归。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方式,它通常把一个答应复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归只需少量的程序就可描述出解题过程所需要的多次重复计算,大大的减少了程序的代码量。递归的主要思考方式在于:把大事化小。
例子

#include<stdio.h>void print(int n){if(n>9){print(n/10);}printf("%d",n%10);}int main(){unsigned int num=10;scanf("%d",&num);print(num);return 0;}

总结

以上就是初阶函数的基本内容了!!!!非常感谢你能看到这里!

如果你觉得你有些想法和我一样,想和我一起提升自己可以关注私信我,与我一起进步,一起共同努力!!!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。