指针是先分配还是递增?

时间:2015-11-09 13:14:51

标签: c pointers increment

当你有声明时:

var shadowBounds = self.bounds shadowBounds = CGRectOffset(shadowBounds, -1, 1) let cornerRadius = 6 layer.shadowPath = UIBezierPath(roundedRect: shadowBounds, cornerRadius: cornerRadius).CGPath

*str++ = *end是否被分配了*str的值,或者它是否会增加,然后被赋予*end的值?

2 个答案:

答案 0 :(得分:5)

作为后增量运算符,它首先指定*end,然后指向str的新/递增地址。

答案 1 :(得分:1)

逻辑,表达式的计算结果如下:

t0 = str;
t1 = *end;
str = str + 1;
*t0 = t1;

除了这些操作发生的确切顺序是未指定。以下序列也是可能的:

t0 = str;
str = str + 1;
t1 = *end;
*t0 = t1;

t0 = *end;
t1 = str;
*t1 = t0;
str = str + 1;

t0 = *end;
t1 = str;
str = str + 1;
*t1 = t0;

一个常数是我们在增量之前更新str指向的位置。