C语言关于指针的理解

前言

        学习指针其实也是加深对C语言底层的理解,不单单是C语言表面的东西,如果理解背后底层的逻辑,使用起来会达到事半功倍的效果。为什么这么讲呢?因为指针和地址是分不开的,而C语言又是对内存进行了封装,如果理解了指针,理解了地址是不是会对底层更熟悉呢。

为什么要学习使用指针?

        1、在数据传递时,如果数据块较大,这时就可以使用指针传递地址而不是实际数据,即提高传输速度,又节省大量内存;

        2、字符串指针,是使用最方便,且常用的;

        3、函数传参,分为值传递和地址传递。例如:变量互换值,正常值传递是不可以进行互换的,地址传递传参可以进行数据互换。

        4、C语言中一些复杂的数据结构往往需要使用指针来构建,如链表、二叉树等。

        5、bootloder难免会对地址进行一些操作,列如跳转,烧写等等。

指针:

        C语言中指针变量其实跟普通变量没有任何区别,如int a,int*b 其中a和b都代表一个内存地址(假设int a 和int *b都是4个字节,地址为0x6000000),但是对这个内存地址的解析方法不同,a是int型的,会按照int的规定去解析(0x6000000开头的4个字节中存储了一个数据),int *b是int*型的,会按照int*的规定去解析(0x6000000开头的4个字节中存储了一个地址,这个地址所代表的内存单元中存放的是一个int类型数据)           

再来了解什么是地址:

        C语言地址,是指内存地址的概念。计算机内存中的各个存储单元都是有序的,按字节编码

        用变量名来访问内存。据一个例子,例如:有一个flash大小为10Byte地址为0x600000-0x600009。

#pragma section("seg_btbuf") //这行代码是将变量n写入到0x600000这个地址
uint8_t n;

        上述代码意思是在0x600000定义了一个变量n,那么上述说C语言也是对内存进行了封装是什么意思呢,其实变量n也是0x600000,相当于变量n是0x600000这个地址的别名,C语言对其进行了封装并进行了绑定。

        待续。。。。。。。。。。。。。。。。。。。。

       

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值