使用自定义函数可以简化程序运行吗为什么

2024年07月19日 阅读 (48)

函数是c语言的功能单位,实现一个功能可以封装一个函数来实现,定义的时候一切以功能为目的,根据功能去实现函数的参数和返回值。

递归函数:

递归函数是指函数在其定义中直接或间接地调用自身的函数。

递归函数需要有一个终止条件,否则会导致无限递归。

内联函数:

内联函数是一种优化技术,通过将函数的代码直接插入到调用点来避免函数调用的开销。

内联函数的定义通常使用inline关键字。

库函数:

C语言标准库提供了许多常用的函数,如输入输出函数、数学函数、字符串处理函数等。

使用库函数可以简化代码,提高开发效率。

自定义函数:

除了标准库提供的函数外,开发者还可以根据需要自定义函数。

自定义函数的定义和调用方式与标准库函数类似,但可以根据具体需求进行定制。

无参数的函数:不能将外部数据传递给函数内部

有参数的函数:通过参数将函数外部的数据传递到函数内部

函数的定义、函数的声明、函数的调用。

实现函数体,确定函数名、函数的参数、函数返回的值类型

int add

返回什么类型的值函数定义为什么类型,x y为形参

只有调用函数时才会给形参开辟空间

无返回值定义为void 有返回值根据返回值类型定义

  • 函数定义由函数头和函数体两部分组成。
  • 函数头包括函数名、参数列表(参数类型、参数名称)和返回类型。
  • 函数体是花括号{}内的代码块,用于实现函数的功能。
使用自定义函数可以简化程序运行吗为什么(1)

将函数名放置调用之前后’;’

如:int add;

#includestdio.h//函数实体在调用之后,所以要事先声明intAdd(intx,inty);intmain(intargc,charconst*argv[]){intnum = Add(1,2);printf("%d",num);return0;}intAdd(intx,inty){returnx+y;}
  • 在程序中,可以通过函数调用执行特定的功能。
  • 调用函数时,需要提供函数名和参数列表(如果有的话)。
  • 调用函数后,程序将跳转到函数体执行,执行完毕后返回到调用点继续执行后续代码。
  • 函数调用:实体名+实参
  • intnum=Add(1,2);

函数内部需要使用外部变量的值 需要将外部变量的值传递给函数内部。这时普通变量就作为函数的形参(单向传递之值传递)

函数内部无法修改外部实参值

#includestdio.h//函数实体在调用之后,所以要事先声明intarray(intx);intmain(intargc,charconst*argv[]){intx =20;printf("x=%d  array=%d",x,array(x));return0;}intarray(intx){    x =10;returnx;}

X的值并未改变

函数内部可以通过形参对外部数组的元素进行读写

数组作为函数的参数

#includestdio.h//函数实体在调用之后,所以要事先声明voidInput(inty[5]);voidOutput(inty[5]);intmain(intargc,charconst*argv[]){intx[5];    Input;    Output;return0;}voidInput(inty[5])//写{inti =0;for(i=0; i5; i++)    {        y = i+10;    }return;}voidOutput(inty[5])//读{inti =5;for(i =0; i5; i++)    {printf("%d",y[i]);    }}

字符数组作为函数的参数

#includestdio.h//函数实体在调用之后,所以要事先声明voidInput_str(charstr[]);intmain(intargc,charconst*argv[]){charstr[] ="l2312";    Input_str(str);return0;}voidInput_str(charstr[]){printf("%c",str[2]);}

键盘输入10个数,输出数组中的最大值

#includestdio.h//函数实体在调用之后,所以要事先声明intOutput_max(inty[],intn);intmain(intargc,charconst*argv[]){inty[128];intn=10;printf("请输入%d 个 int 数值:", n);inti=0;for(i=0;in;i++)    {scanf("%d",     }printf("%d",Output_max(y,n));return0;}intOutput_max(inty[],intn){intnum = y[0],i;for(i=0; in; i++)    {ifnum = y;    }returnnum;}

二维数值数组作为函数的形参,函数内部 可以通过形参操作(读写)外部二维数值数组的元素。

#includestdio.h//函数实体在调用之后,所以要事先声明voidInput_two(inty[3][4],introw,intcol);voidOutput_two(inty[3][4],introw,intcol);intmain(intargc,charconst*argv[]){inty[3][4];    Input_two(y,3,4);    Output_two(y,3,4);}//二维数组的读写voidInput_two(inty[3][4],introw,intcol){printf("请输入%d 个 int 数值:",row*col);inti=0;for(i=0;irow;i++)    {intj =0;for(j=0;jcol;j++)        {scanf("%d",         }    }return;}//数组遍历voidOutput_two(inty[3][4],introw,intcol){inti=0;for(i=0;irow;i++)    {intj =0;for(j=0;jcol;j++)        {printf("%d ", y);        }printf("");    }}

二维字符数组作为函数的形参函数内部可以 通过形参操作外部二维字符数组的元素

#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{char buf = {""};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{printf("%s",buf[i]);}}void Input_char_two(char buf[5][128], int row, int col){printf;int i=0;for(i=0;irow;i++){scanf;//每个空格划分一个字符串//fgets;//指定每个字符串长度为6}}

键盘输入10个字符串,输出数组中的指定的字符串

#includestdio.h//函数实体在调用之后,所以要事先声明voidInput_char_two(charbuf[5][128],introw,intcol);voidchar_compare(charbuf[5][128],introw,charstr[]);intmain(intargc,charconst*argv[]){charbuf[5][128] = {""};    Input_char_two(buf,5,6);charbuf[5][128] = {""};    Input_char_two(buf,5,6);//字符串比较char_compare(buf,5,"asd");     }voidInput_char_two(charbuf[5][128],introw,intcol){printf("请输入%d 个字符数串", row);inti=0;for(i=0;irow;i++)    {//scanf;fgets(buf[i], col,stdin);    }}//字符串比较voidchar_compare(charbuf[5][128],introw,charstr[]){inti =0;for(i=0; irow; i++)    {if(strcmp==0)        {printf("%s",buf[i]);return;        }    }printf("dont have");}

郑重声明:玄微运势的内容来自于对中国传统文化的解读,对于未来的预测仅供参考。