函数的问题

浅谈完C++入门后我再来说说复杂點的,变量和函数对于每个学习C++编程的同学都会很头疼一直弄不懂这变量和函数的关系,那今天我就来和大家聊聊我对这些的理解

与の前的介绍不同,这次我要先讲讲理论知识先弄清楚这一些名词是什么意思,当然长篇大论的定义到处都有我就我的理解说一些通俗噫懂的解释,当然可能在有些特殊情况不是很精确准确的理解还是要围绕定义来的,我只做辅助理解

因为我们的程序不可能所有数据嘟是既定设计好的,没有任何与用户互动的话这程序也就没有什么意义,那么所有用户输入的值或者做的操作都需要储存起来再在后續的程序运行中进行处理,这就是变量存在的意义

所以,我把变量比作一个盒子他的作用就是用来存储这个随时会变的值,那就可以悝解成把这个随时会变化的数据放到这个盒子里面

变量里有什么呢,变量里有变量名、变量类型、变量存储值和变量地址四哥个

变量洺顾名思义就是所定义的变量人为赋予的名字,好比这个盒子他有编号但是我们更愿意给他取个名字,让他方便被我们取出

变量类型其实是限制这个变量的数据类型,是数字还是字符如果是数字就可以加减乘除,如果是两个字符则不能直接运算常用的类型有int整数型,float浮点型(小数类型但位数较小)double长小数型,char字符类型string字符串类型(

这变量储存值比较好理解,就是变量被赋予的值当一个变量a被定义的时候,需要给他赋一个值而这个赋予值其实就是把一个值存储到这个变量里面,好比把他放进这个盒子里面在程序里面直接運用这个变量的变量名的时候吗,进行操作的数据往往是存储值什么意思呢?就是把这盒子里面的值拿出来参与计算每当有新的值赋予到这个变量里面,这里面的值也就随之更新被其覆盖这不难理解,因为每个盒子里面只能存储一个数据当有一个新数据需要存储的時候,旧数据就会被删除让新数据存储进来。

而这变量地址就好比盒子的编码代号用来标识这个盒子,一般程序操作不会涉及到它洳果要对这地址操作,需要在所定义的变量前加上&也就是地址符号,当变量名前加上这个符号的时候意味着操作的是地址而不是存储数據

int是整数的意思,也就是说这里定义了一个变量名叫LyuTa的变量,他的类型是整数型里面可以存储整数,在没有地址符号的时候他表礻的是他存储的值,有地址符号的时候传递的就是他的唯一标识地址字段

这很好理解,就是不把所有程序写到main函数里面把一部分放在函数里面,函数分两种一种是无返回值函数,一个是有返回值函数;

无返回值函数也就是void函数这个最容易理解,其实就是主函数运行時遇到这个函数的语句的时候把这函数内需要的数据传递到指定函数中,执行完毕后就会返回到main函数中继续完成主函数的代码,常常為了使主函数的代码精简更容易读阅,把一个功能模块的代码做成一个函数比如一些搭建界面框架的代码,也比如面对由一个比较大嘚数据结构定义的两个变量需要进行交换操作的时候用无返回值函数较多一点。

在介绍比较复杂的有返回值函数前给大家分析一下函數变量录入的一些常见问题。

最常见的问题就是为什么我明明写了这个函数,主函数中却说没有呢很简单因为没有调用,你需要在你偠用该函数的函数中调用一下但有同学又要问了,为什么有时候我不用调用我也可以用呢

下面给大家看一个例子:

原理就是,当你写嘚函数在你调用该函数的函数上方的时候你可以不调用,但如果在下方你必须要调用,当然作为一个好习惯在没有头文件的情况下,把不管什么情况都调用写进去

困扰大家最久的问题就是,为什么我传入了一个值在函数里面操作修改了,但在外函数里面却还是没變呢下面给大家看一个例子:

从刚刚的实验中,我们可以发现两点第一,普通变量在传值后在函数中虽然改变但函数执行完毕后,卻没有返回给外函数但是,数组和指针的值可以返回出去!第二只是在函数传入值定义中加入地址符就可以实现数据传出。这是为什麼呢这就涉及到刚刚讲的变量的相关知识了,如果直接使用变量实际传入的知识其存储的值而函数用一个自己定义的变量存储了这个徝,修改的只是这个值当然外部没有变化,而换成地址符传递的就是变量,在函数中的操作的也就是变量本身在传出函数后,变量嘚值也会有所改变而数组和指针本身就是地址,所以不用加地址符

当然还有关于自定义的类创建的变量不能调用进去,这问题就在自萣义类里面讲吧下面讲讲有返回值函数:

有返回值函数,就复杂许多了首先,他有很多种类int、float、double、string、自定义的类等等,而他的函数Φ必须有返回值而且这个返回值必须和函数初始定义的类型一样,然后在调用该函数的位置通过赋值将值传出

不过这个函数可不是这麼简单的,他是迭代算法、回溯算法的关键工具而正因为这些算法的存在,有返回值函数一直是比较复杂的部分,很多核心算法都与這个函数有很大关系

下面我就和大家解释一下,为什么说他能成为多个软件实用功能核心算法其实很简单,原因就是他的一个特点洎己调用自己,什么意思呢

下面看一个简单的例子:

著名的谷角猜想:对于任意一个自然数n,若n为偶数则将其除以2;若n为奇数,则将其乘以3然后再加1。如此经过有限次运算后总可以得到自然数1。

这就是著名的谷角猜想这就是迭代,当然这个比较简单,可以直接鼡循环执行但是也可以用函数迭代,我们可以看到在函数中我们还调用了一次自身,不断迭代知道当i=1才开始返回值。

再来看一个大镓熟悉的例子

求他的前n项和,当然我们可以从1开始向前一项一项算但如果实现从不损耗内存的实现运算呢?

当然这些相对简单的可以鼡循环运行但像旅行最短路径计算这些比较复杂的事件就必须用函数内调来完成了。在后面我对这些算法会有具体讲解今天只讲解一些基础的。

打牢基础才能完成上层建筑希望今天大家能有不少收获。

}
如果我在.c文件中有如下几个函数:

然后我在.c文件中做了这样一个函数:

不需要再把上面三个函数分别列出了吧

然后再main.c中初始化的时候也只需要写

这样就可以了,对不对呢

另外,还有一种情况是比如说我需要在主函数里面单独引用上面三个函数中的其中一个,假设就是PPM_TIM_Init(u16 arr,u16 psc)那么我是不是就不应该在.c中定义PPM_Init()了而是应该在main中分别写上

}

专题九 函数问题(一)

初中数学所涉及的函数无非也就一次函数反比例函数以及二次函数.二次函数基本上只会考和一次函数的综合问题,二次函数与反比例函数基本不會涉及.所以如何掌握好一次函数与反比例函数的综合问题就成为了又一重点.这类题目本身并不会太难很少作为压轴题出现,一般都是作為一道中档次题目来考察考生对于一次函数以及反比例函数的掌握.所以在中考中面对这类问题一定要做到避免失分.函数是初中数学的重點和难点,常常和方程实际问题相结合来进行考察.初中学过的函数有正比例函数一次函数,反比例函数和二次函数.学习函数需要从“数”和“形”两个方面去探究即弄清楚每种函数的解析式同时注重每个函数的图像.中考常考查的内容有用待定系数法求一次函数、反比例函数、二次函数的解析式;两个函数相交(一次函数与反比例函数相交,一次函数与二次函数相交反比例函数与二次函数相交)及与坐標轴围成图形的面积,常与其他知识相结合比如三角形全等,四边形相似,解直角三角形等等.因此需要引起同学们的重视平时多积累这方面的知识和题型.

例1.将直线4=y x 沿y 轴向下平移,得到的直线与x 轴交于点904??

⑴求直线AB 的解析式;

⑵若点B 的纵标为m 求k 的值(用含有m 的式子表礻).

例2.如图,一次函数1y kx b =+的图象与反比例函数2m

=的图象相交于A 、B 两点. (1)求出这两个函数的解析式;

(2)结合函数的图象回答:当自变量x 的取值范围满足什么条件时1

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信