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

10
通常,我看到声明常量的代码是像这样的:
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个回答

22

它们是相同的。通过编写以下任一内容之一,可以从给定类型"派生"常量类型:

const type
type const

在这种情况下,顺序并不重要。

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

type const* var
const type* var

这意味着指针可以被改变,但数据不能(除非你进行类型转换)。你可以从右到左读它,读作“指向常量 类型 的指针”。

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

type* const var

注意绑定。

这意味着指针不能指向其他地方,但可以更改数据。您可以从右到左阅读它,作为“类型的常量指针”。

毫不奇怪,使指针和数据都为常量可以通过以下方式完成:

type const* const var
const type* const var

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接