const,static,extern作用
2982 ワード
一、constとマクロの違い(面接問題): const概要:以前よく使われていた文字列定数は、一般的にはマクロに抽出されていましたが、アップルはマクロに抽出することをお勧めしません.const定数を使用することをお勧めします. コンパイル時刻:マクロはプリコンパイル(コンパイル前処理)、constはコンパイル段階である.コンパイル検査:マクロはチェックせず、コンパイルエラーを報告せず、置換するだけで、constはコンパイルチェックし、コンパイルエラーを報告する. マクロの利点:マクロはいくつかの関数、方法を定義することができます.constはできません. マクロのデメリット:大量のマクロを使用すると、コンパイル時間が長くなりやすく、毎回再置き換えが必要になります.
二、const作用:制限タイプ constは、右側の変数(基本データ変数p、ポインタ変数*p) を修飾するためにのみ使用される constによって修飾された変数は読み取り専用です.
三、const開発で使用するシーン:需要1:この方法のパラメータはアドレスで、中はアドレスで値を読み取ることしかできなくて、アドレスで値を修正することができません .需要2:パラメータがアドレスであり、パラメータのアドレスを変更できない方法を提供する.
四、staticとexternは簡単に使う(一つのものを使うには、まずその役割を理解する)
staticの役割:修飾ローカル変数: ローカル変数のライフサイクルを延長すると、プログラムが終了してから破棄されます. ローカル変数は1つのメモリしか生成されず、1回だけ初期化されます. ローカル変数の役割ドメインを変更します. グローバル変数 を修飾するは、このファイルにのみアクセスできます.グローバル変数の役割ドメインを変更します.ライフサイクルは に変更されません.グローバル変数の繰り返し定義を避ける externの役割:は、グローバル変数(グローバル静的変数を含む)の値を取得するためにのみ使用され、変数 を定義するために使用できません. externの動作原理:現在のファイルでグローバル変数があるかどうか、見つからないかを検索してから、他のファイルを検索します.
五、staticとconstを併用する staticとconstの役割:読み取り専用の静的変数 を宣言する使用シーンの開発:1つのファイルでよく使用される文字列定数、staticとconstの組合せ を使用できます.
六、externとconstを併用する開発で使用されるシーン:複数のファイルでよく使用される同じ文字列定数で、externとconstを組み合わせて使用できます.理由: staticとconstの組み合わせ:各ファイルに静的グローバル変数を定義する必要があります. externとconstの組み合わせ:グローバル変数を定義するだけで、複数のファイルが共有されます.
大域定数正規書き方:開発中はすべての大域変数を管理しやすく、通常GlobeConstファイルを作り、中には大域変数を専門に定義し、統一管理しなければならない.そうしないと、プロジェクトファイルは探しにくい.
二、const作用:制限タイプ
- (void)viewDidLoad {
[super viewDidLoad];
//
int a = 1;
//
a = 20;
// const
// const: p
// ,const b
const int b = 20; // b:
int const b = 20; // b:
//
b = 1;
// const: *p, * , .
// int , a
int *p = &a;
int c = 10;
p = &c;
// p ,
// p
*p = 20;
// const , *p1,
//
const int *p1; // *p1: p1:
int const *p1; // *p1: p1:
// const p1
int * const p1; // *p1: p1:
// const *p1 const p1
//
const int * const p1; // *p1: p1:
int const * const p1; // *p1: p1:
}
三、const開発で使用するシーン:
@implementation ViewController
// const * , *a
// a, a
- (void)test:(const int * )a
{
// *a = 20;
}
// const * , a
// a , a
- (void)test1:(int * const)a
{
int b;
//
a = &b;
*a = 2;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
int a = 10;
// 1: , , , 。
// const, .
[self test:&a];
// 2: , , 。
[self test1:&a];
}
@end
四、staticとexternは簡単に使う(一つのものを使うには、まずその役割を理解する)
staticの役割:
五、staticとconstを併用する
六、externとconstを併用する