单片机学习—指针详解(C语言)

1.指针的简介 

        指针(pointer)作为C语言的一个重要知识点,可以算的上是C语言的灵魂,在C语言中使用也是十分灵活的,在实际应用中,我们可以通过使用指针指向数据的地址,对数据进行间接访问

2.计算器的存储机制

        谈起指针,就不得不说一下内存相关的问题,因为指针瑜底层硬件息息相关。下面就让我们先从计算机的存储机制开始了解一下吧。

        现在先定义几个我们常见的变量吧

int a = 0x12345678;//变量类型:int 字节数:4(计算机系统里面int为四字节的数据)
char b = 0x33;//变量类型:char 字节数:1
char c[] = {0x33,0x22,0x11};

        由于现在的计算机存储机制为小端输入,也就是先从数据的低位逐步向高位一个字节一个字节(也就是八位数据)写入地址位,而数组保存数据的顺序恰恰相反,从数组的第零位依次向后储存。其次,由于计算机对变量的保存是随机指定到特定的地址,所以我们并不清楚数据储存的地址在哪。那么,不妨假设,变量a的首地址为0x32,它的存储形式如下:

地址变量a的存储(小端输入)
0x32(首地址)78
0x3356
0x3434
0x3512

 

3.定义指针

        在了解了指针的基本介绍以及计算机存储单元的存储机制之后,我们再建议不了解一下指针吧!

指针即指针变量,不用惊讶,我们通常说的指针就是指指针变量,和上面定义的数据一样都是变量,但是它的作用是用于存放其他数据单元的首地址。若指针存放了某些数据单元的首地址,那么这个指针就指向了这个数据单元,如果某个指针存放的值是0,则这个指针就是一个空指针;

(unsigned)char     1字节        (unsigned)char  *    X字节
(unsigned)int      4字节        (unsigned)int  *     X字节
(unsigned)short    2字节        (unsigned)short *    X字节
(unsigned)long     4字节        (unsigned)long  *    X字节


其中:X = (系统操作位数 / 8);

4.指针的操作(包括取地址、取内容、加和减)

        在了解了指针是如何定义之后,那就让我们一起学习一下指针可以有什么操作吧,这一部分的学习我们可以使用C的编译器进行学习效果更佳哦!

取地址        p = &a          将数据a的首地址赋给P
取内容        p = *p          将指针指向的数据单元的值给取出来
加            p++             令指针向下移动1个数据宽度
              p+4             令指针向下移动4个数据宽度
减            p--             令指针向上移动1个数据宽度
              p-4             令指针向上移动4个数据宽度

注意:这里的加和减的对象是数据宽度,并不是数字简单的+1(-1),举个例子来说:我们定义了一个int类型的指针变量,我们把int a=0x33的首地址赋给p,也就是p = &a,在这里我们假设a的首地址是0x55,那么这个时候我们在对p进行+或者-运算时,数据宽度就是4,而不是1,p++的结果就是0x59;

至此,今天的学习就先到这里啦!剩下的部分明天再跟进吧。

                

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值