指向字符串文字的指针的算术运算。

时间:2014-03-07 05:15:59

标签: c string pointers

有关

char *p="abcd";

我在代码中有以下两个陈述

++*p;

和第二个

*++p;

这两个产生了相同的结果,但这两个方法的实现方式有什么不同吗?另外请清楚哪一个具有更高的优先级“++”或“*”.Thanx

1 个答案:

答案 0 :(得分:1)

Precedence table

首先评估具有更高优先级的优先级表运算符。

在您的情况下使用前缀增量++,它具有与deference运算符*相同的优先级。 所以当你们两个在同一个表达式中时,它的相关性应该被认为是which is right to left

++ * p将等同于++(* p)指针首先被引用然后值递增。

 char *p="abcd";

*p等于a++字符会给你b

* ++ p将等同于*(++ p)指针先递增然后递归

++p将指向字符串中的b,然后* deference将为您提供位置2的b。

更改输入字符串,您会得到不同的答案。同样的答案你得到的就像第一个字符的操作与第二个字符的操作相匹配一样