c语言与或非的作用嵌入式,嵌入式C语言的指针使用总结-嵌入式系统-与非网

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;// 给指针函数赋值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值