关于嵌入式C语言指针的解析

C语言作为嵌入式开发的基础语言已经越来越让工程师们知道它的厉害:可以直接操控     寄存器   ,方便     CPU   的功能设置;可以直接操作物理地址,并进行位的操作进而达到硬件的操作等等。如果你用8位16位     单片机   进行开发学习,相信使用一些程序技术可以完成设计:循环、选择、位操作、条件判断、数组和程序嵌套等。如果你进行操作系统,关注操作系统的内核(以     linux   为例),你就会发现这些C语言是其中的一小部分。对于操作系统来说更多运用到指针,究其原因,一个很重要的原因就是处理速度快。那么,今天我就把C语言的指针做个总结。

对于学习过指针的同学都知道,常数是不能直接幅值给指针的,如果想给指针幅常数,需要如下操作:int num=8;int *pnum=#这时我们需要注意,pnum指向8     存储   的地址,*pnum为该地址存储的数据8。

 关于嵌入式C语言指针的解析_设计制作_RF/无线

指针和数组有着天然的联系,其实数组就是一个连续地址存放着常数,我们看下面一个例子: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语言指针的解析_设计制作_RF/无线

b、int(*data)[3]为一数组指针,为一数组,每个元素为存放一个地址,赋值如下:int arry[3]={1,3,5};int (*data)[3]=&arry;那么*data就为第一个元素的地址,**data就为第一个地址所在的元素1。

那么pe     rs   on.pername[20]="jack"是不能通过的,究其原因就是结构体为抽象数据类型,不分配存储单元,所以数组赋值不通过。如果采用指针赋值,那么可以解决这类问题。

指向函数的指针在linux操作系统中很常见,现在拿个简单的例子来进行说明:int print(int a, int b ,char *p)

{ printf("in put number sum is %d,input string is %s\n",a+b,p);//三个参数,int int和char*

从上面这个例子中可以看出,一个函数其实就是从一个地址开始的特殊功能程序,其函数名就为该程序的首地址,所以可以这么给指针函数赋值:pprint=print;//给指针函数赋值

77
84
0
99

相关资讯

  1. 1、《香蜜沉沉烬如霜》中的七场婚礼,锦觅竟做了五次新娘,太意外了2354
  2. 2、《新乌龙院》和《欧洲攻略》票房口碑扑街,流量明星的时代结束了891
  3. 3、《鬼灭之刃》韩国观影人数突破150万名列年度票房榜第二位3121
  4. 4、王晶宣布《唐伯虎点秋香》新版开拍,主演换人配角是喜剧大腕4961
  5. 5、43岁靳东妻子曝光,美貌不输刘涛,恩爱多年竟是熟悉的这位影后4715
  6. 6、《赤狐书生》哈妮克孜又仙又妖,银幕首秀妩媚十足,让人目不转睛4121
  7. 7、票房旗手巨石强森又一力作!好莱坞大片《摩天营救》7.20上映4006
  8. 8、《复仇者联盟4》曝新调整,黑豹加戏,《银河护卫队3》无限搁置2166
  9. 9、《悬崖之上》票房冲破6亿元,但一部生猛新片火爆而来!4232
  10. 10、《僵尸》日本首映麦浚龙:内地上映与否尚未知712
全部评论(0)
我也有话说
0
收藏
点赞
顶部