当前位置: 首页 > news >正文

网站合作客户石家庄网站建设seo公司

网站合作客户,石家庄网站建设seo公司,国内做网站用的程序,做网站一定要注册域名吗文章目录 函数函数的定义与声明局部变量和全局变量、静态变量静态变量和动态变量函数的值传递函数参数的地址传值 函数的嵌套使用函数的递归调用 函数 函数的定义与声明 函数的概念:函数是C语言项目的基本组成单位。实现一个功能可以封装一个函数来实现。定义函数的…

文章目录

  • 函数
    • 函数的定义与声明
    • 局部变量和全局变量、静态变量
    • 静态变量和动态变量
    • 函数的值传递
      • 函数参数的地址传值
    • 函数的嵌套使用
    • 函数的递归调用

函数


函数的定义与声明

函数的概念:函数是C语言项目的基本组成单位。实现一个功能可以封装一个函数来实现。定义函数的时候一切以功能为目的,根据功能去定函数的参数和返回值。

函数的定义

函数定义的格式:函数的返回值类型 函数名(形参列表)
{代码块;}

注意:

  1. 函数的返回值类型,可以是学过的int、char、float、double以及void,还可以是以后要学习的类型;它的作用:表示函数执行完之后,可以得到一个什么类型的值。
  2. return 返回出一个具体值(void类型的返回值可以没有return)。
  3. 函数名:标识符(符合用户自定义标识符)、见名知意
  4. 有指定参数时,要指定参数的类型、名字;参数可以是一个、多个,也可以没有。
  5. 不能在定义函数时,在函数首部小括号后直接跟分号。
  6. 指定函数所完成的功能,也就是规定函数要完成什么操作, 函数是做什么。
  7. 函数体可以没有语句,但不能没有花括号。
  8. 在定义函数的里面,不能再定义一个函数。
  • 例1:定义一个打印九九乘法表的函数并调用
#include<stdio.h>//定义一个函数,打印一个九九乘法表
void printMul() //void 定义一个返回值为空的函数
{for (int i = 1; i <= 9; i++){for (int j = 1; j <= i; j++){printf("%dx%d=%d\t", j, i, i*j);}printf("\n");}
}
int main()
{printMul();return 0;
}

在这里插入图片描述

注意:当main函数写在调用的函数之前时,程序运行会报错。因为程序是从上到下运行,当运行到main函数中时找不到你所调用的printMul()函数,则会报错。这时,我们可以进行函数声明来解决这个问题。

函数声明语句的一般格式:

函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2,……);

也就是相当于把函数头前置

#include<stdio.h>void printMul(); //函数的返回值类型 函数名(形参列表);int main()
{printMul();return 0;
}//定义一个函数,打印一个九九乘法表
void printMul() //void 定义一个返回值为空的函数
{.....
}
  • 例2:函数的返回值类型说明,函数的返回值类型必须跟函数类型一致,否则就会出现错误。例如我想定义一个返回值为整型的函数
    在这里插入图片描述
  • 若返回值为双精度浮点型,则会出现数据丢失,因为只返回整型数据
    在这里插入图片描述

局部变量和全局变量、静态变量

什么是局部变量 ?
局部变量是在函数中定义的普通变量(没有任何的修饰),以及在函数开头定义的形参。

局部变量的作用范围:从定义开始,往下的作用域;出了作用域就不能使用。函数开头定义的变量,在该函数范围内有效。

在这里插入图片描述

什么是全局变量?
全局变量:函数外或全局空间定义的变量
全局变量的作用范围:从定义开始往下,在本文件内所有的地方都可以使用。
全局变量在程序结束的时候,会被释放。

#include<stdio.h>
int a = 10; //定义一个全局变量void func1()
{int a = 30;printf("func1函数中:a=%d\n", a);
}void func2()
{printf("func3函数中:a=%d\n", a);
}int main()
{func1();func2();return 0;
}

在这里插入图片描述

静态变量和动态变量

程序中所定义的变量默认是动态局部变量(auto)。
在定义变量前加一个static可定义一个静态局部变量。

静态变量在程序开始后定义,结束前才会被释放,所以其生命周期比较长,在函数调用中只会被定义一次,不会被定义多次,当再次执行到定义语句时,其值不会被重置(初始化),会保留上次改变的值。

void func2()
{static int c = 10; //静态变量 c会被锁住,让c不会被释放int b = 10;b++; c++;printf("b=%d\tc=%d\n", b, c);
}int main(void) //有void表示不会有任何实参传过来,如果有就会报错
{for (int i = 0; i < 3; i++){func2();}return 0;
}

在这里插入图片描述

函数的值传递

注意:形参不会改变实参的值,实参传值给形参,值是一个单向传递。
在这里插入图片描述

函数参数的地址传值

fun函数的形参是如何接收传输数据——地址?

(1)先得到数据的地址,然后传给函数。
(2)访问定义函数的里的这个地址的值

如何定义一个接收地址的变量?
能存地址的变量:指针变量

指针变量的定义: 数据类型 *指针名
数据类型:用指针存的什么类型的地址
指针名:符合标识符命名规则和命名规范

* —— 取值运算符、解引用;通过地址做解引用找到值
在这里插入图片描述

函数的嵌套使用

函数的定义时相互平行、独立的,在定义函数时,一个函数内不能再定义另一个函数,也就是说,函数不能嵌套定义。

但是函数可以嵌套调用,也就是再调用一个函数的过程中,又调用另一个函数。

在这里插入图片描述

函数的递归调用

函数的递归:在一个函数中,函数重复的调用自己。
在函数调用的时候,函数会入栈。

在这里插入图片描述

  • 注意以上结果,当我们调换两个语句时,会有不一样的结果
    在这里插入图片描述
    过程分析
    在这里插入图片描述
  • 函数递归调用经典例子:斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)在现代物理、准晶体结构、化学等领域,斐波那契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波那契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

int func5(int n)
{if (n > 2){return func5(n - 1) + func5(n - 2);}else if (n == 1 || n == 2){return 1;}
}int main(void) //有void表示不会有任何实参传过来,如果有就会报错
{printf("%d\n", func5(4));return 0;
}

在这里插入图片描述

http://www.qie1.com/news/753.html

相关文章:

  • 公司做网站注意什么seo优化网站排名
  • 域名怎么做搜索引擎优化概述
  • 家装网站做seo优化网站教程百度
  • 3D动漫做爰网站免费推广的预期效果
  • 蚂蚁网站建设seo关键词排名软件
  • 深圳市营销型网站建设小程序免费制作平台
  • 成都 做网站如何推广引流
  • 有哪些做画册的网站快速排名程序
  • 如何安装wordpress的插件安装windows优化大师免费
  • 孟村县网站建设价格外贸推广建站
  • 茶叶网站开发b站免费建网站
  • 做网站在哪里申请明星百度指数在线查询
  • 网站设计公司武汉快速建网站
  • 成都网站建设制作价格千锋教育培训机构学费
  • 个人可以做b2b网站惠州网站营销推广
  • 企业网站内容策划设计培训班学费一般多少
  • 服务器网站域名系统装置百度搜索推广登录入口
  • 用php做的网站百度刷排名seo软件
  • 江汉建站公司最近新闻热点大事件
  • 专门做电商的招聘网站seo搜索优化公司
  • 用php开发wap网站网站seo哪家做的好
  • 绿色做环保网站的好处网络公司经营范围
  • wordpress 购物网站优化关键词的正确方法
  • 网站的建设流程是什么网站怎么做推广
  • 邢台网站优化seoer是什么意思
  • 做好的网站怎么链接全国免费信息发布平台
  • 网站开发 项目职责杭州seo按天计费
  • java做网站的权限管理适合女生去的培训机构
  • 影院网站怎么做佛山做seo推广公司
  • 电子商务网站建设与设计论文百度广告关键词价格表