基本數(shù)據(jù)類型
- const 在基本數(shù)據(jù)類型中的用法
- (void)baseConst {
// 這兩種情況,是一樣的.
// 只讀常量
int const a = 10;
const int b = 20;
}
指針類型
- 指針 的簡單用法
- (void)pointer {
// int類型的變量(整形變量)
int a = 20;
// 指針變量:指向int類型的變量的地址,作用是存儲地址
int* p = &a;
*p = 30;
NSLog(@"%d", a);
}
- const 與 指針 的結(jié)合使用
- (void)pointerAndConstSuper {
int a = 10;
int b = 20;
// 這兩種情況是一樣的,修飾的是具體的值(*p與*p1不可修改,但是p與p1可以修改)
int const * p = &a;
const int* p1 = &a;
NSLog(@"%d, %d", *p, *p1);
// 可以修改地址
p = &b;
p1 = &b;
NSLog(@"%d, %d", *p, *p1);
b = 300;
NSLog(@"%d, %d", *p, *p1);
// 下面就錯了
// *p = a;
// *p1 = a;
}
- 注意下面的用法:
- (void)superPointerAndConstSuper {
int a = 20;
int b = 30;
const int * const p = &a;
// p = &b; // 錯的
// *p = b; // 也是錯的.
}
宏與常量的異同
宏是替換,沒有變量的概念.用到就會有多余的內(nèi)存.編譯之前,就有了.
常量是全局的,內(nèi)存只有一份.
使用場景
- 方法參數(shù)中使用
void pointer (const int* p) {
// 自己想想看吧
}
- 靜態(tài)常量
static NSString* const CoderHG = @"CoderHG";
- 全局常量
// HGConst.h文件
extern NSString * const HGID;
// HGConst.m文件
NSString * const HGID = @"http://www.520CoderHG.com";
建議
在開發(fā)中,不要用宏定義來定義常量.