C语言

您所在的位置:网站首页 数组作为函数参数的变化特点 C语言

C语言

2024-07-15 16:34:45| 来源: 网络整理| 查看: 265

        在C语言中,所有的程序设计都必须含有一个主函数(main函数),对于简单问题的程序设计,我们可以将所有的语句、功能都写在主函数中,但是对于复杂问题,如果将所有的语句都写在主函数中,就会使主函数变得十分的复杂,这使得阅读与运行变得困难。因此,人们想到用组装的方式进行简化程序设计,将不同功能的函数分开表示,在使用时在进行调用,这样就可以将程序设计分模块进行。这也就是程序模块化的思路。

        函数就是功能,每一个函数用来实现一种特定的功能,函数的名字可以直接反应函数的功能。一个C程序可以由一个主函数和若干个其他函数构成,由主函数调用其他函数,其他函数之间也可以进行调用。

        函数分为:库函数与自定义函数;

        其中库函数为:c语言中自定义的函数;自定义函数为:用户根据自身要求所设计的函数;

目录

一、库函数

二、自定义函数

三、函数的调用

四、 函数调用时的数据传递

五、函数调用的练习

 六、函数的嵌套使用

 七、函数的声明

八、函数的递归

九、数组作为函数的参数

一、库函数

        常见的库函数包括:打印函数--printf、输入函数---scanf、求字符串长度函数---strlen、比较字符串函数---strcmp、以及复制字符串函数---strcpy等等;

举例:复制字符串函数---strcpy

#include int main() { char arr1[]={"dhjas"}; char arr2[20]={0}; strcpy(arr2,arr1); printf("%s",arr2); return 0; }

结果:

         库函数的使用,必须包含相应的头文件;具体的库函数使用,可以查阅下面的两个网站。

         学会查找工具的使用:

www.cplusplus.comhttp://www.cplusplus.com

www.cppreference.comhttp://www.cppreference.com

二、自定义函数

        自定义函数,即按照自己的要求来设置函数的功能,自定义函数和库函数一样,有函数名、返回值类型和函数参数;定义函数时应包括以下内容:

1、指定函数的名字,一般函数的名字就会体现出函数的功能,函数的名字用于后面对函数的调用。

2、指定函数的类型,即函数返回值类型,如果不需要返回值函数的类型定义为void。

3、函数的参数(名字及类型)以便函数进行调用时,对其进行数据的传递。

4、指定函数的功能,即定义这个函数是干什么的,这也是最重要的部分;

        函数的定义方法:

        自定义函数在进行调用前必须要进行定义

        1、定义无参函数

        函数中不含参数的传递:

        类型名  函数名(void)

        {

        函数体//函数体的内容即为函数的功能;

        }

        2、定义有参函数

        类型名  函数名(参数列表)

        {

        函数体//函数体的内容即为函数的功能;

        }

        3、定义空函数

类型名  函数名 ()

        函数体是空的,调用此函数时,什么工作也不做,没有实际作用。常常用于函数暂时还未写好,先用空函数占一个位置,等以后扩充程序时在进行编写。

三、函数的调用

         定义函数的目的就是为了调用函数,以得到预期的效果。函数调用形式为:

         函数名(实参列表)

        如果是调用无参函数,实参列表可以没有,但是括号不能省略,如果实参列表包含多个实参,则各个实参用逗号隔开。

例如:输入两个数,输出较大的一个

#include int get_max(int x,int y)//函数的定义 { return (x>y?x:y);//函数的功能,返回较大的一个 } int main() { int a,b; int c; printf("请输出两个整数\n"); scanf("%d %d",&a,&b); c=get_max(a,b);//函数的调用 printf("%d",c); return 0; }

结果:

四、 函数调用时的数据传递

1、形式参数与实际参数

        在进行函数调用时,主调函数与被调函数之间有数据传递关系,在函数定义时,我们讲到函数名后面括号中的变量名称称为“形式参数”在主调函数中调用一个函数时,函数后面括号中的参数称为“实际参数”,实际参数可以是常量、变量以及表达式;

2、实参和形参之间的数据传递

        在函数调用过程中,系统会把实参的值传递给别调用函数的形参。这种数据之间的传递称为虚实结合。

说明:1、在定义函数中指定的形参,在未进行函数调用时,他们并不占内存单元,只有在发生函数调用时形参才被临时分配地址;

2、将实参的值一一对应传给形参;形参与实参的名称可以相同,也可以不同;

3、通过return语句将函数值待会给主调函数;

4、函数被调完后,形参单元被释放;

5、实参可以向形参传数据,而形参不能向实参传数据。函数之间数据的传递是单向的;

例如:输入两个数字,交换两个数字

#include void wap(int x,int y)//定义交换函数,形式参量x,y { int z; z=x; x=y; y=z; } int main() { int a,b; printf("请输出两个数:"); scanf("%d %d",&a,&b); printf("%d,%d\n",a,b);//交换前a,b值 wap(a,b);//调用交换函数 printf("%d,%d\n",a,b);//交换后a,b值 return 0; }

结果:

        结果并没有实现交换;a和b为实际参数;x和y为形式参量;当实参传给形参的时候,形参是实参的一份临时拷贝,对形参的修改,不会影响实参;也就是说,由于“单向传递”的“值传递”方式,形参值的改变不能使实参值的改变。 

        对上述代码实现修改,利用传递地址的方法实现两个数之间的交换。

#include void wap (int* px,int* py)//定义交换函数,形式参量为指针地址 { int z = *px; //指针所指向的地址内元素发生转变 *px=*py; *py=z; } int main() { int a,b; printf("请输出两个数:"); scanf("%d %d",&a,&b); printf("%d,%d\n",a,b); wap(&a,&b);//函数的调用,实际参数为a,b的地址 printf("%d,%d\n",a,b); return 0; }

结果:

         那么什么地方传参数时需要传地址?什么地方传参不需要传地址?

        如果函数不改变a和b的值,只需要用到a和b的值,就不需要传递地址。

        函数的调用:

        1、传值调用

        函数的形参和实参分别占用不同内存块,对形参的修改不会影响实参;

        2、传址调用

        传址调用把地址传给函数,函数和函数外部的变量之间可能会建立联系。函数内部可以直接操作函数外部。

五、函数调用的练习

练习1、输入一个数字,判断其是否为素数

#include #include int wap(int x)//定义判断素数函数 { int i; for(i=2;i1) return n*jc(n-1); else return 1; } int main() { int i; printf("请输入一个数字:"); scanf("%d",&i); int sum=jc(i); printf("%d",sum); return 0; }

结果:

        此处对于函数的递归作以简单的介绍,具体递归的应用还需要多加练习,此处只希望读者弄清楚递归的概念, 并且能够区分递归与嵌套的区别(一个是调用自己,一个是调用别的函数)。

九、数组作为函数的参数

        数组作为函数的参数时,分为数组元素作为函数的参数以及数组名作为函数的参数;

        1、数组元素作为函数的实参

        数组元素可以作为函数的实参,不能作为函数的形参,因为形参是在函数被调用时临时分配的存储单元,不可能为单独的一个数组元素分配地址。在数组元素作为实参时,把实参的值(数组元素的值)传给形参,是“值传递”的方式。

举例:输入10个数,要求输出其最大的元素以及该元素是第几个数。

#include int max(int x,int y )//定义比较函数 { return (x>y?x:y);//返回较大值 } int main() { int arr[10];//定义输入数字的数组 int i,n,m; printf("请输入是十个数:"); for(i=0;i


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭