“static NSInteger const”和“static const NSInteger”之间有什么区别吗?

时间:2014-05-12 08:34:41

标签: objective-c

通常,我已经看到声明常量的代码就像这样:

static const NSInteger kNum = 1;
static NSString * const kStr = @"A";

我知道为什么const应该写在NSString *后面,但我不确定static NSInteger const kNum = 1;static const NSInteger kNum = 1;是否相同。

static NSInteger conststatic const NSInteger之间有什么区别吗?

1 个答案:

答案 0 :(得分:21)

他们是一样的。通过编写以下内容之一,可以从给定类型“派生”常量类型:

const type
type const

在这种情况下,订单无关紧要。

这些是指向常量数据的变量指针:

type const* var
const type* var

这意味着指针可以更改,但数据不能更改(除非你投射它)。您可以从右向左阅读“指向常量类型的指针”。

这是一个指向变量数据的常量指针:

type* const var

请注意绑定。

这意味着指针不能指向别处,但您可以更改数据。你可以从右到左阅读“常量指向 type ”。

毫不奇怪,使指针和数据都保持不变可以这样做:

type const* const var
const type* const var