OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4922|回复: 4

关于指针偏移的问题

[复制链接]

81

主题

270

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
452
金钱
452
注册时间
2014-8-11
在线时间
87 小时
发表于 2014-8-19 18:23:49 | 显示全部楼层 |阅读模式
5金钱
在SPI_Flash_Write()函数中定义形参u8 *pBuffer 
指针偏移的操作:pBuffer+=secremain;
我的问题是:u8相当于unsigned char (一个字节);secremain是偏移的字节数;假如我定义的
                   *pBuffer是两个字节,那么是不是:pBuffer+=secremain/2
还有就是源代码中的指针偏移操作我能不能这样实现:&pBuffer+=(secremain*n)   n是一个字节占的地址数(一个字节占用几个地址数???)

问的比较杂,多多包涵

最佳答案

查看完整内容[请看2#楼]

简单的说: 如果你指针指向一个结构体,+1就是下一个结构体,算地址就是便宜这个结构体占用的单元数。 如果你指针指向一个数组首地址.那么+1就是数组中下一个元素。。。 也就是+-操作是针对他指向的元素而言的。
我是一只菜鸟,但我会大鹏展翅
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-8-19 18:23:50 | 显示全部楼层
简单的说:
如果你指针指向一个结构体,+1就是下一个结构体,算地址就是便宜这个结构体占用的单元数。
如果你指针指向一个数组首地址.那么+1就是数组中下一个元素。。。
也就是+-操作是针对他指向的元素而言的。
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

81

主题

270

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
452
金钱
452
注册时间
2014-8-11
在线时间
87 小时
 楼主| 发表于 2014-8-19 18:27:52 | 显示全部楼层
补充下:源代码中的指针偏移操作是不是说数组中的一个元素占n个字节,假如我想将数组的指针指向下一个元素就把数组当前指针位置+n
我是一只菜鸟,但我会大鹏展翅
回复

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2014-8-19 19:32:46 | 显示全部楼层
C语言没有说怎么算,只是客观描述:

当指针加上或减去一个整型表达式,结果类型取指针操作数的类型,若该指针操作数指向某个数组对象的元素,指结果向一个与原始数据有一定偏移的元素,该元素与原始元素的下标之差等于该整形表达式。
于20150522停用该账号:http://www.microstar.club
回复

使用道具 举报

81

主题

270

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
452
金钱
452
注册时间
2014-8-11
在线时间
87 小时
 楼主| 发表于 2014-8-19 20:50:59 | 显示全部楼层
回复【3楼】styleno1:
---------------------------------
如果是下标之差是不是就是说数组中第a个元素偏移到第b个元素,只要让上述的secremain=b-a

那如果我要通过直接操作地址怎么运算
我是一只菜鸟,但我会大鹏展翅
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-3 15:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表