Objective C const NSString * vs NSString * const
我试图在我的.h文件中的NSString常量在我的.m中定义。 我明白那个
extern NSString * const variableName;
在.h和
NSString * const variableName = @"variableValue";
是做到这一点的方法。 检查c教程我看到, const
应该在variables定义之前。 我的问题是为什么它没有声明为extern const NSString * variableName;
在.h和const NSString * variableName = @"variableValue";
在他们中。 我知道这是行不通的,因为我遇到编译器警告说'传递方法名的参数1:丢弃指针目标types的限定符'。 这是什么意思?
这是不一样的。 const修饰符可以应用于值或指向值的指针。
int * const
一个常量指针(不可修改)为一个整数(其值可以修改)
const int *
一个可修改的指向一个常量整数的指针(它的值不能被修改)
所以你可以想象:
const int * const;
常量指针不是指向常量的指针。 常量指针表示指针是常量。 例如,常量指针int * const ptr2;
表示ptr2
是一个常量的指针。 这意味着ptr2
不能被指向另一个整数。 但是,可以改变ptr2
指向的整数。
而一个指向常量的指针const int * ptr1;
指示ptr1
是指向一个常量整数的指针。 整数是不变的,不能改变。 但是,可以使指针ptr1
指向某个其他整数。