请教一个指针问题,百思不得其解,谢谢

[复制链接]
查看11 | 回复3 | 2010-10-26 11:18:59 | 显示全部楼层 |阅读模式
char Buf[80];
char *Receiverdata;
Recevierdata=Buf;

(*(Receivedata)++)=ReadUART1();
是不是这样:ReadUART1()函数返回的值先放到*Receivedata,也就是Buf[0]中,然后Receivedata加1,也就是指向Buf[1],这样ReadUART1()函数下次返回的值就当到了Buf[1]中。
如果是这样一个运算过程,不应该是((*Receivedata)++)=ReadUART1();吗?
谢谢
*和++不是同等级的运算符,并且是自右至左的顺序吗?
为什么先处理 *(Receivedata) 呢? 这个括号起什么作用?

回复

使用道具 举报

千问 | 2010-10-26 11:18:59 | 显示全部楼层
(*(Receivedata)++)=ReadUART1();意思就是 *(Receivedata) = ReadUART1();的返回值。然后Receivedata++,向后走一位。((*Receivedata))++=ReadUART1();首先(*Receivedata)取buf【0】,然后将buf【0】的值加1.就是这样。然后看=号的两边都是两个常量,能用等于吗???这么写就是一个错误了。 ()中的最大。++比*大 00000000 :#includeint main(){ 0: 8d 4c 24 04
lea
回复

使用道具 举报

千问 | 2010-10-26 11:18:59 | 显示全部楼层
(*Receivedata)++,这样只是代表*Receivedata的值加1,类似于int i;i++;而不是内存地址加1,得到的值就一直放在Buf[0]中了,Receivedata++ 才代表内存地址加1。
回复

使用道具 举报

千问 | 2010-10-26 11:18:59 | 显示全部楼层
楼上 wanglllmn 正解
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行