前言:
眼前姐妹们对“c语言程序中的函数一般由两部分组成”都比较看重,大家都需要分析一些“c语言程序中的函数一般由两部分组成”的相关文章。那么小编也在网络上搜集了一些关于“c语言程序中的函数一般由两部分组成””的相关资讯,希望同学们能喜欢,各位老铁们快快来了解一下吧!一、概述及分类1、概述
函数是c语言的功能单位,实现一个功能可以封装一个函数来实现,定义的时候一切以功能为目的,根据功能去实现函数的参数和返回值。
2、函数分类(定义角度)
递归函数:
递归函数是指函数在其定义中直接或间接地调用自身的函数。
递归函数需要有一个终止条件,否则会导致无限递归。
内联函数:
内联函数是一种优化技术,通过将函数的代码直接插入到调用点来避免函数调用的开销。
内联函数的定义通常使用inline关键字。
库函数:
C语言标准库提供了许多常用的函数,如输入输出函数、数学函数、字符串处理函数等。
使用库函数可以简化代码,提高开发效率。
自定义函数:
除了标准库提供的函数外,开发者还可以根据需要自定义函数。
自定义函数的定义和调用方式与标准库函数类似,但可以根据具体需求进行定制。
3、函数分类(有无参数)
无参数的函数:不能将外部数据传递给函数内部
有参数的函数:通过参数将函数外部的数据传递到函数内部
(参数:函数外数据 到 函数内部的桥梁)
二、函数定义、声明、调用
函数的定义、函数的声明、函数的调用。
1、函数的定义:
实现函数体,确定函数名、函数的参数、函数返回的值类型
int add(int x, int y)
返回什么类型的值函数定义为什么类型,x y为形参
只有调用函数时才会给形参开辟空间
无返回值定义为void 有返回值根据返回值类型定义
函数定义由函数头和函数体两部分组成。函数头包括函数名、参数列表(参数类型、参数名称)和返回类型。函数体是花括号 {} 内的代码块,用于实现函数的功能。2、函数的声明
(函数,在调用之后要声明)
将函数名放置调用之前后’;’
如:int add(int x, int y);
#include <stdio.h>//函数实体在调用之后,所以要事先声明int Add(int x, int y);int main(int argc, char const *argv[]){ int num = Add(1,2); printf("%d\n",num); return 0;}int Add(int x, int y){ return x+y;}3、函数的调用在程序中,可以通过函数调用执行特定的功能。调用函数时,需要提供函数名和参数列表(如果有的话)。调用函数后,程序将跳转到函数体执行,执行完毕后返回到调用点继续执行后续代码。函数调用:实体名+实参int num = Add(1,2);三、函数传参1、普通变量作为函数的参数
函数内部需要使用外部变量的值 需要将外部变量的值传递给函数内部。这时普通变量就作为函数的形参(单向传递之值传递)
函数内部无法修改外部实参值
#include <stdio.h>//函数实体在调用之后,所以要事先声明int array(int x);int main(int argc, char const *argv[]){ int x = 20; printf("x=%d array=%d\n",x,array(x)); return 0;}int array(int x){ x = 10; return x;}
X的值并未改变
2、一维数值数组作为函数的形参
函数内部可以通过形参对外部数组的元素进行读写
数组作为函数的参数
#include <stdio.h>//函数实体在调用之后,所以要事先声明void Input(int y[5]);void Output(int y[5]);int main(int argc, char const *argv[]){ int x[5]; Input(x); Output(x); return 0;}void Input(int y[5])//写{ int i = 0; for(i=0; i<5; i++) { y[i] = i+10; } return;}void Output(int y[5])//读{ int i = 5; for(i = 0; i<5; i++) { printf("%d\n",y[i]); }}
字符数组作为函数的参数
#include <stdio.h>//函数实体在调用之后,所以要事先声明void Input_str(char str[]);int main(int argc, char const *argv[]){ char str[] = "l2312"; Input_str(str); return 0;}void Input_str(char str[]){ printf("%c\n",str[2]);}3、一维数组作为案例
键盘输入10个数,输出数组中的最大值
#include <stdio.h>//函数实体在调用之后,所以要事先声明int Output_max(int y[],int n);int main(int argc, char const *argv[]){ int y[128]; int n=10; printf("请输入%d 个 int 数值:", n); int i=0; for(i=0;i<n;i++) { scanf("%d", &y[i]); } printf("%d",Output_max(y,n)); return 0;}int Output_max(int y[],int n){ int num = y[0],i; for(i=0; i<n; i++) { if(num < y[i]) num = y[i]; } return num;}4、二维数值数组作为函数的形参
二维数值数组作为函数的形参,函数内部 可以通过形参操作(读写)外部二维数值数组的元素。
#include <stdio.h>//函数实体在调用之后,所以要事先声明void Input_two(int y[3][4], int row, int col);void Output_two(int y[3][4], int row, int col);int main(int argc, char const *argv[]){ int y[3][4]; Input_two(y,3,4); Output_two(y,3,4);}//二维数组的读写void Input_two(int y[3][4], int row, int col){ printf("请输入%d 个 int 数值:",row*col); int i=0; for(i=0;i<row;i++) { int j = 0; for(j=0;j<col;j++) { scanf("%d", &y[i][j]); } } return;}//数组遍历void Output_two(int y[3][4], int row, int col){ int i=0; for(i=0;i<row;i++) { int j = 0; for(j=0;j<col;j++) { printf("%d ", y[i][j]); } printf("\n"); }}
二维字符数组作为函数的形参函数内部可以 通过形参操作外部二维字符数组的元素
#include <stdio.h>//函数实体在调用之后,所以要事先声明void Input_char_two(char buf[5][128], int row, int col);void Output_char_two(char buf[5][128],int row);int main(int argc, char const *argv[]){ char buf[5][128] = {""}; Input_char_two(buf,5,6); Output_char_two(buf,5);}//二维字符串数组void Output_char_two(char buf[5][128],int row){ int i=0; for(i=0; i<row; i++) { printf("%s\n",buf[i]); }}void Input_char_two(char buf[5][128], int row, int col){ printf("请输入%d 个字符数串\n", row); int i=0; for(i=0;i<row;i++) { scanf("%s", buf[i]);//每个空格划分一个字符串 //fgets(buf[i], col, stdin);//指定每个字符串长度为6 }}5、二维数组作为参数的案例
键盘输入10个字符串,输出数组中的指定的字符串
#include <stdio.h>//函数实体在调用之后,所以要事先声明void Input_char_two(char buf[5][128], int row, int col);void char_compare(char buf[5][128],int row,char str[]);int main(int argc, char const *argv[]){ char buf[5][128] = {""}; Input_char_two(buf,5,6); char buf[5][128] = {""}; Input_char_two(buf,5,6); //字符串比较 char_compare(buf,5,"asd"); }void Input_char_two(char buf[5][128], int row, int col){ printf("请输入%d 个字符数串\n", row); int i=0; for(i=0;i<row;i++) { //scanf("%s", buf[i]); fgets(buf[i], col, stdin); }}//字符串比较void char_compare(char buf[5][128],int row,char str[]){ int i = 0; for(i=0; i<row; i++) { if(strcmp(buf[i], str) == 0) { printf("%s\n",buf[i]); return; } } printf("dont have\n");}四、如有错误欢迎指正
标签: #c语言程序中的函数一般由两部分组成 #c语言程序中的函数一般由两部分组成对吗 #c语言程序中的函数一般由两部分组成对吗为什么 #在c语言程序中函数包括 函数 函数和 函数 #c语言中函数是