嵌入式C语言的指针使用总结

2019-07-18 10:04:16 来源:21ic
标签:
C语言作为嵌入式开发的基础语言已经越来越让工程师们知道它的厉害:可以直接操控寄存器,方便CPU的功能设置;可以直接操作物理地址,并进行位的操作进而达到硬件的操作等等。如果你用8位16位单片机进行开发学习,相信使用一些程序技术可以完成设计:循环、选择、位操作、条件判断、数组和程序嵌套等。如果你进行操作系统,关注操作系统的内核(以linux为例),你就会发现这些C语言是其中的一小部分。对于操作系统来说更多运用到指针,究其原因,一个很重要的原因就是处理速度快。那么,今天我就把C语言的指针做个总结。
 
对于学习过指针的同学都知道,常数是不能直接幅值给指针的,如果想给指针幅常数,需要如下操作:int num=8;int *pnum=#这时我们需要注意,pnum指向8存储的地址,*pnum为该地址存储的数据8。
 
指针和数组有着天然的联系,其实数组就是一个连续地址存放着常数,我们看下面一个例子:int arry[3]={1,3,5};那么arry就是该数组的首地址,*arry就是该数组首地址存放的数据1,*(arry+1)则为该数组的第二个位置存放的数据3.
 
从以上分析可以看出:*arry和arry[1]同样指向该数组的首个元素。
 
那么可以在进一步延伸,如下:a 、int *data[3] 为指针数组,数组中每个元素为一个指向int型数据的指针,赋值如下:int arry[3]={1,3,5};int *data[3]={arry,arry+1,arry+2};data[0]为指向arry首地址,*data[0]为该地址存放的数据1。data为data数组的首地址,*data和data[0]都为数组arry的首地址。其实也可以说定义了三个数组 data[0], data[1]和data[2]。
 
关于嵌入式C语言指针的解析
 
b、int(*data)[3]为一数组指针,为一数组,每个元素为存放一个地址,赋值如下:int arry[3]={1,3,5};int (*data)[3]=&arry;那么*data就为第一个元素的地址,**data就为第一个地址所在的元素1。
 
那么person.pername[20]="jack"是不能通过的,究其原因就是结构体为抽象数据类型,不分配存储单元,所以数组赋值不通过。如果采用指针赋值,那么可以解决这类问题。
 
指向函数的指针在linux操作系统中很常见,现在拿个简单的例子来进行说明:int print(int a, int b ,char *p)
 
{ printf("in put number sum is %d,input string is %sn",a+b,p);//三个参数,int int和char*
 
从上面这个例子中可以看出,一个函数其实就是从一个地址开始的特殊功能程序,其函数名就为该程序的首地址,所以可以这么给指针函数赋值:pprint=print;//给指针函数赋值。
 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
用MCU的PWM产生负电压的教程
用MCU的PWM产生负电压的教程

我们应该知道,有一种开关电源是通过PWM波来实现的,但你知道通过PWM波也能输出负电压吗?

PCB 设计常见布线方式梳理

在我们学习嵌入式开发的过程中,PCB布线是必不可少的。好的布线方式,轻则看着美观、布局合理,重则可以节约生产成本,达到良好的电路性能和散热性能,使元器件的性能达到最优。今天,小编梳理了PCB设计中常见的布线方式,希望大家看后能有所启发。

嵌入式“软”硬领域缺乏探索,使用 FPGA 有何潜力?

在一个领域中,如果唯一不变的是变化,那么不需要对电子技术 和设计方法的发展变化做多少回顾,就能见证到变化是如何使设计工程师能够创建出下一代创新产品。

单片机最小系统常见问题解析

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统. 对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.

14 种嵌入式操作系统介绍,你用过哪几种?

以下介绍14种主流的RTOS,分别为μClinux、μC/OS-II、eCos、FreeRTOS、mbed OS、RTX、Vxworks、QNX、NuttX,而国产的嵌入式操作系统包括都江堰操作系统(djyos)、Alios Things、Huawei LiteOS、RT-Thread、SylixOS。

更多资讯
Android 全新Logo公布,谷歌将对Android进行“重大革命”

谷歌今天宣布对Android品牌进行重大改变,使其更具包容性和可访问性。

聚焦医疗POCT应用部署 打造灵活可靠的主板方案
聚焦医疗POCT应用部署 打造灵活可靠的主板方案

随着POCT(即时检验)行业高速发展,在行业发展早期,各大厂家为了进一步降低成本,对设备本身品质要求和成本控制严苛,整体行业在发展前期面临相对简单和廉价的方案。随着行业发展和国家相关政策标准的出台,对医疗相关设备监管的加强,早期的很多设备不得不面临淘汰和升级的现状。

罗德与施瓦茨联合COMPRION公司,为嵌入式SIM卡eSIM的远程sim配置提供组合测试解决方案

罗德与施瓦茨宣布与移动测试专业公司COMPRION合作,为通信解决方案提供商提供了用于测试工业4.0和联网汽车应用所需的嵌入式UICC(eSIM)的远程SIM配置(RSP)的一种方法。

华为将借鸿蒙打造万物互联时代?汽车或将是首个爆点

犹如十几年前微软如日中天的时候,所有科技界的人物在思考着“下一个微软在哪里?”

鸿蒙想要成功,开发人员、生态、用户一个都不能少

华为已经发布Harmony OS(鸿蒙操作系统),之前我们已经看到许多野心勃勃的移动OS折戟沉沙,败北而归,为什么失败?因为缺少App支持,缺少开发者支持。对于Harmony,外媒到底是怎样看的?有了