C语言开发日记(7)函数浅识

本文介绍了C语言中的函数概念,包括函数的定义、格式、调用方式、返回值、参数传递和生存期。重点讲解了参数传递的原理,通过示例解释了为什么直接数值交换无法在函数中实现。此外,还详细阐述了如何在Dev-C++中进行调试,包括设置调试信息、运行及使用调试工具的步骤。
摘要由CSDN通过智能技术生成

目录

一,函数(反映变量之间的关系)介绍

附:如何在Dev-C++使用调试(debug)


 导言:在初步了解C语言的if条件语句,while循环语句,for循环语句和数组后,我们可以相对来编写一些简单的代码(整数分解,比较大小,枚举)。我们不难发现,这些代码都需要函数作为载体依托。接下来讲述函数的性质以及应用

一,函数(反映变量之间的关系)介绍

      1,定义:C语言函数(C language function)是一个固定的程序段。可接收0个或多个参数,实现固定的计算机运算功能并返回一个值

    2, 格式:

【数据返回类型】【函数名】(参数表)     //函数头(C language function head),定义自变量和自变量类型,函数名后面一定接括号
//函数体(C language function body),函数的具体内容
{                           //函数体中花括号必不可少
   各种语句;
}

    3, 调用形式:【数据返回类型】【函数名】(参数值)。值得注意的是,“()”在函数调用中起到重要作用,即使没有参数也要加上“()”,如果没有加上括号,系统不会判断这个函数名属于函数而是属于变量;除此之外,如果存在着参数,那么参数的数据类型不可省略,参数名可以省略

    4,函数的返回:如果不是在主函数中,那么一定要带return(return停止函数运行,并送回一个值)进行返回到原来的函数中去,返回的值可以是数值,可以是变量,也可以是空值

    5, 函数调用步骤(以例题1典):


#include<stdio.h>                      
int main()                                     
{                                                 
     int max(int x,int y);                  
     int a,b,c;                                  
     scanf("%d,%d",&a,&b);                   
     c=max(a,b);                           
     printf("%d",c);                         
     return 0;                                  
}                                                   
int max(int x,int y)                 
{                                              
int z;                                          
if(x>y)z=x;                                
else   z=y;                             
return(z);                                 
}

​

在编程的第四行中我们可以看到我们声明了一个int类型的max函数(max由于在函数库中不存在,所以需要我们定义)【扩展点:函数分为库函数(Library function)和定义函数(Define function);库函数不需要在主函数外面编写,即可拿来用,而定义函数是函数库中没有,需要在主函数外面执行构建】,max函数里面有两个整型参量x,y,这是传递回主函数时采用。输入第六行的变量后,来到第七行,触发第十一行的max函数,执行语句,把语句判断的结果通过return(z)代回到第七行中,于是c就被赋值为最大的那个。很明显,我们先声明函数,接下来在函数触发点触发了该函数,然后跳到那段代码运算,最后把结果通过单一出口出return返回到触发点

    6,函数顺序:C语言从上到下运行;一般来说,不带定义函数声明的主函数写在定义函数的下面(因为在主函数中不带声明,写在定义函数之前,C99编译器不会识别到的定义的函数是什么,就会报错;如果是C99编译器之前,它会帮你猜测函数的类型,最后调用),如果主函数写在定义函数前面,那么要在主函数里面增添声明或者在主函数之前添加函数调用形式作为函数声明(也叫做函数原型,在函数调用形式后面加上分号“;”)(注意,声明的数据接收类型必须和定义函数的类型一致

    7,参数传递:

①如果函数有参数,那么调用时必须传递给它值,这个值包括字面量,变量,返回值,计算结果

②如果调用函数的值和参数类型不匹配,那么系统会偷偷帮你把类型转换好,但错误难以发现

③注意,我们传过去的仅仅是值例如ab数值交换,能交换成功吗?

#include<stdio.h>
int swap(int a,int b);
int main()
{
  int a=5,b=6;
  swap(a,b);
  printf("%d,%d"a,b);
  return 0;
}
int swap(int a,int b)
{
  int t=a;
  a=b;
  b=t;
}

很明显,不能。

在上面函数中,我们把第五行int a=5赋给第六行swap(a,b)中,然后第六行swap里面的a传递数字5给第十行swap括号内的第一个int a(不是传递a=5过去),另一个int b=6同理,仅此而已;所以int a=5和swap()函数没有任何联系,swap()函数里面的a,b ,t是swap()函数自己参数a,b的事情;经过单步调试,你会发现下面的函数还是会计算,下面的a确实变成了6,b确实变成了5,但是,这样的代码不能传回去,因为每个函数都有自己的变量空间,参数位于这个独立的空间,函数没有关系(所以想要实现参数的转换,可以用指针)【扩展点:对于参数表中的参数,叫做形式参数(新版叫参数),调用函数时给的值,叫做实际参数(新版叫值)

     8,生存期:函数每次远行,会产生一个独立的变量空间,每次运行结束,这个独立的空间就会消失;这个空间在函数体(大括号)里面,因此我们称它为生存期(本地变量)。例如,上面swap()函数里面的a,b,t的生存期只在它函数里面

附:如何在Dev-C++使用调试(debug)

1,预处理:

①点击“工具(T)”→“编译选项(C)”

②点击“代码生成/优化”→“连接器”→“产生调试信息”→“yes”→“确定”

③返回“工具”,点击“环境选项(V)”,勾住“查看鼠标指向变量“(这项一般系统默认为勾),完成

2,操作:

①点开编程工程文件,先运行与编译

②结束过程后,在左边一列数字中选出你所在的一行,点击,然后后出现红色行

③点击”调试“,再点击”调试(D)“,出现蓝色行

 蓝色是你当前所在的步骤

④下面方框内有几种功能可供使用

 以上是本人的日记和日常操练,是笔记,是笔记!都是自己的笔记记录以及自己的理解,如有错误欢迎指正,本人洗耳恭听 

 PS:入门小白,技术力不高,如果各位大佬要喷,请嘴下留情,谢谢;除此之外这个网站有其他非常优秀的博主和文章,欢迎大家去关注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值