VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 893|回复: 6

指针问题

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-8 14:00:02 | 显示全部楼层 |阅读模式
char *s1,*s2,*p;
*(p-s1+s2)可以编译通过
而*(s2+p-s1)却编译不过,为什么?
回复

使用道具 举报

0

主题

73

帖子

46.00

积分

新手上路

Rank: 1

积分
46.00
发表于 2020-5-28 21:15:01 | 显示全部楼层
两个指针相减得到的是整数,整数可以和指针相加,但两个指针不能相加。
回复

使用道具 举报

0

主题

73

帖子

46.00

积分

新手上路

Rank: 1

积分
46.00
发表于 2020-5-29 00:30:01 | 显示全部楼层
另外,“+”和“-”的优先级是一样的,而且都是左结合,所以对于那两个括号中的表达式,编译器都是试图按从左到右的顺序进行理解,理解不了就报错。
回复

使用道具 举报

2

主题

54

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-5-29 08:00:02 | 显示全部楼层
而且必需指向个数组的指针才能进行指针运算
回复

使用道具 举报

2

主题

54

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-5-31 09:00:01 | 显示全部楼层
是指向相同数组的两个指针,这样进行指针之间的运算才是有意义的,
随便两个指针之间进行指针运算的行为未定义
语法上是“可以的”,但逻辑上是“未定义”的,也就是说计算结果无意义,这样说比较准确。
回复

使用道具 举报

0

主题

37

帖子

28.00

积分

新手上路

Rank: 1

积分
28.00
发表于 2020-5-31 10:45:01 | 显示全部楼层
不太无聊,两个指针相加是无意义的。
回复

使用道具 举报

0

主题

55

帖子

44.00

积分

新手上路

Rank: 1

积分
44.00
发表于 2020-6-4 10:30:01 | 显示全部楼层
认真看编译器给出的错误提示。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

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