嵌入式学习day11

day10练习

 

 

 

 

 

 

 

指针

1.指针特点:

        1.让代码更加简洁高效

        2.提供直接访问内存的操作

        3.利用指针可以直接操作硬件

2.指针概念:

        1.地址:为了区分内存中不同字节的编号(寻址范围:0 - 2^64-1)

        2.指针:指针就是地址,地址就是指针,指针比地址多了指向的概念

        3.指针变量:存放指针(地址)的变量(64位操作系统中所有指针变量均为8个字节)

3.指针相关运算符

        1.运算符:

               1. &:取地址运算符,获得变量在内存空间中的首地址

                        只有变量(左值)才能&,常量和表达式不能进行&操作

                        &构成的表达式值为:变量在内存空间中的首地址

                        &构成的表达式类型为:变量的类型升级后的类型

                2. *:获得指针指向的空间,或者对应空间中的值

                        *运算符连接的内容必须为指针类型,不能是普通变量类型

                        如果直接使用*对应的表达式,表达式值为:该指针指向空间中的值

                        如果使用*对应的表达式其类型为:指针类型降级后的类型

                        *对应的表达式作为左值表示,将等号右边的值放入指针指向的空间


4.指针变量的定义

        1.定义方法:

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

                注意:不能使用未经初始化的指针

        2.野指针:

                未经初始化的指针或者指向已经被释放空间的指针,称为野指针

        3.空指针:

                指向内存地址为0x0的指针为空指针,用NULL来表示

                内存地址0x0空间为只读空间,不能赋值,NULL指针不能执行*p = value操作

4.指针特性:

        变量两种访问形式:

                1.直接访问:

                        通过变量的变量名访问变量空间

                2.间接访问:

                        通过变量在内存中的地址访问变量空间

5.指针的算术运算

        1.算术运算符:

                指针偏移的大小由指针指向的数据类型大小决定

                两个指针相减得到的结果为,两个地址间相差的数据元素个数

        2.不同指针类型之间的区别:

                *操作时处理方式不同

                算数运算

6.指针常见操作

        1.指针需要注意:

                指针有两个需要注意的概念:指针变量本身,指针指向的空间

                对指针变量:p或者q修改,改变的是指针的指向

                对*p或者*q操作,改变的是指针指向的空间,指针还是指向原有的空间

7.指针作为函数参数

        1.值传递

                实参将值传递给形参,形参的值改变,实参不会改变

                函数体内部想使用函数外部变量值的时候,使用值传递

        2.地址传递

                实参将地址传递给形参,形参是指向实参的指针,可以利用形参修改实参的值

                函数体内部想修改函数体外部变量值的时候,使用地址传递

eg. 封装函数交换两个数字顺序(用指针)

 eg.封装函数求最大公约数和最小公倍数,用指针

 eg.封装函数接收年月日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值