嵌入式Linux学习DAY10

  1.函数实现

1.类型标识符(返回值的类型标识符)

2.函数名--------和函数功能对应

3.形式参数-----函数接受数据入口

                        不一定要有,看函数的功能需要,没有形参,一般写void替代位置。

                       使用标准:

                       a.个数相同

                       b.类型匹配

                       c.顺序匹配:从右向左。

4.函数体--------功能的代码

5.返回值类型

                        如果没有,返回值类型一般写成void

                        返回值类型如果不写,默认为int型。

                        返回值是指函数结束后,其函数的值为多少,一般用于if(函数)这种判断情况。

函数定义 如: int add(int a,int b)

                       {

                          功能

                        }

使用时直接使用 add(参数1,参数2)即可实现所规定的功能

              若使用 add(参数1,参数2)则是函数调用语句,成为语句的一部分(参数),声明时也加分号,函数一般放在主函数之前,放在后面则必须声明。

2.函数执行时,内存运行

1.不同函数储存在不同空间,程序执行时先查找main函数,先在保护现场(放入内存)保护主调函数的相关数据以及返回值地址据,然后跳到次级函数,执行完次级函数后,恢复现场。

main函数先存入栈底,然后次级再存入(栈的本质是块空间),用时先使用最后存的,后使main.

Linux的栈默认有8M,可修改大小。

内存有:

栈的特点:(运行内存)短暂储存代码、数据、变量,先进先出,局部空间,自动申请,自动释放

堆的特点:大,用以放资源文件(图画,声音......)手动申请,手动释放

字符常量区:放字符串常量

全局区:储存全局变量

代码区:储存代码

程序=代码+数据;

递归循环:直接递归-----调用自己,陷入循环,直到栈区被压满。

                  间接递归-----调用另一个函数,另一个函数调用自己。

在效率上:正常循环>递归循环

递归实现循环的方式:先递推,再回归

                                    递推:找重复关系

                                    回归:返回 return

递归循环逻辑:如果结束,返回结束的值,如果没结束,返回函数。

你可能感兴趣的:(学习)