欢迎光临
我们一直在努力

嵌入式-C语言高级-函数(1)

今天,将为大家带来函数的一个讲解,在讲解之前呢,在为大家讲一下二维字符数组,因为字符串在后面也是十分常用的,得掌握,那废话不多说,开始今天的学习吧:

1、二维字符型数组

1.1. 概念

主要用于存放字符串数组

二维数组是一维数组的数组,字符串使用一位字符串数组存储,字符串数组使用二维字符数组存储

1.2.定义

char str[行数][列数];
char str[32][32];

1.3 元素访问

str[行数][列数];                //访问的是一个char类型元素

str[行数];                        //访问的是一维数组,即一行的数据

1.4 初始化

一般对于字符串,不常用全部初始化

1. 局部初始化:

char str[5][32] = {"hello", "world", "how", "are", "you"}

char str[5][32] = {0};

2. 默认初始化:

char str[][32] = {"hello", "world", "how", "are", "you"}

讲解完二维字符数组后,数组就先告一段落了,就进入函数的一个学习了,继续跟随博主的脚步吧!

2、函数

2.1 基本概念

1.功能:

(1)避免重复性代码

(2)程序模块化

2.函数的三种形式:

(1)函数的定义

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

{

        语句块;

        return 返回值;

函数类型:函数运行结果的类型,如果省略不写,默认int类型,可以写成void 表示没有结果

函数名:与变量名要求一致

形参:形式参数,展示对数据的操作方法

返回值:函数的运行结果,如果与函数类型不一致,需要将返回值强制转换为函数类型

(2)函数的调用

函数名(实参1,实参2,…);

注意:

函数调用时,实参会将自己的值传递给形参

(3)函数的声明

如果被调函数在主调函数的下方定义,需要在主调函数的上方对被调函数声明

2.2 变量的作用域与生命周期

1.作用域:

一个变量能够使用的范围

局部变量:变量作用域在局部范围内(定义变量最近的大括号内),出了作用域无法使用

全局变量:变量作用域在全局范围内,整个代码任意位置都可以使用全部变量

全局变量可以和局部变量重名,局部范围内,局部变量会将全局变量隐藏

2.生存周期:

变量从被创建到被回收的整个过程称为生存周期

存储类型 数据类型 变量名;

存储类型:

1.auto 自动型变量、局部变量(默认存储类型)

        将变量存放在栈区

        特点:

                (1)未经初始化,值为随机值

                (2)程序运行到变量定义时,为变量开辟空间

                (3)程序运行超过变量作用域时,回收变量空间

2. register  寄存器变量

        将变量存放在CPU内部的寄存器中,寄存器存满则存放在栈区等价于auto类型

3.extern 声明外部变量

        引用一个外部定义的变量,需要在当前文件中声明该变量为外部存储类型

4. static 静态变量

        (1)延长变量生存周期,在编译时分配空间,代码运行结束回收空间

        (2)限定变量或者函数只能在本文件中使用

        (3)防止多文件全局变量重名

           特点:

                (1)未经初始化,值为0;

                (2)变量在编译时开辟空间;

                (3)程序结束回收空间

今天函数就先讲到这里吧,多了大家也记不住,今天的内容也是特别重要的,得掌握,然后呢,还是在给大家用图讲解一下32位操作系统的一个C语言内存分布吧:

由上图所示,我们一般只关注栈区、堆区、数据区以及文本区,前三个区是我们需要重点关注的,各区存放的都是些什么数据,得掌握清楚。

好了,今天的内容就给大家讲到这里了,下次还是继续为大家讲解函数的内容,敬请期待!各位友友,觉得该内容对你有用的,别忘了点点赞,一键三连,如果有错误或有不同看法,还请评论区见。

赞(0)
未经允许不得转载:171主机测评 » 嵌入式-C语言高级-函数(1)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址