IOS-objectiveC【語法】修飾符 static extern const

const

const最好理解,修飾的東西不能被修改

指針類型根據(jù)位置的不同可以理解成3種情況:

I 常量指針

//?初始化之后不能賦值,指向的對象可以是任意對象,對象可變。

NSString * const pt1;

II 指向常量的指針

// 初始化之后可以賦值,即指向別的常量,指針本身的值可以修改,指向的值不能修改

const?NSString?* pt2;

III?指向常量的常量指針

const?NSString?* ?const pt3;

extern

等同于c,全局變量的定義,

//x .h 聲明

extern const NSString * AA;

//x .m 定義

const NSString * AA?= @"abc";

// 調(diào)用

#import "x.h"

或者再次申明

extern const NSString * AA;

static

等同于c,將變量的作用域限定于本文件?

不同于java C++里面的類變量,oc沒有類變量

疑問

我在.h文件里定義一個static變量,

I .h初始化

在不同的.m里調(diào)用都有值,這些值是否同一個對象?

【不同的對象】

II .m里初始化(or賦值)

初始化的值只在.m文件里有效果,即等同于c,將變量的作用域限定于本文件

其他.m文件調(diào)用的值都沒有賦值。

【不同的對象】

結(jié)論

static

?// static變量屬于本類,不同的類對應的是不同的對象

? ??// static變量同一個類所有對象中共享,只初始化一次

const

? ??// static const變量同static的結(jié)論I,只是不能修改了,但是還是不同的對象

?// extern const變量只有一個對象,標準的常量的定義方法

?// extern的意思就是這個變量已經(jīng)定義了,你只負責用就行了

?voidmain(){

?? ?char?*str1={"Hello"};

?? ? char?*str2={"Hello?World"};

? ? char?*?const?ptr1?=str1?;

? ? //指針常量--指針本身是常量,指向的地址不可以變化,但是指向的地址所對應的內(nèi)容可以變化?6??7?????ptr1?=str2;?//錯誤?因為這是一個常量指針,改變指向的地址了?8??9?????printf("%s?\n",*ptr1);

?}

?//編譯錯誤????error?C3892:?'ptr1'?:?you?cannot?assign?to?a?variable?that?is?const


?voidmain(){

? char?*str1={"Hello"};

? char?*str2={"Hello?World"};

? char?*?const?ptr1?=str1?;

? //指針常量--指針本身是常量,指向的地址不可以變化,但是指向的地址所對應的內(nèi)容可以變化 ? ?*ptr1?='A';//?正確?因為指向的地址的內(nèi)容是可以變化的 printf("%c?\n",*ptr1);

}

//輸出??A

?voidmain(){

? ? ?char?*str1={"Hello"};

? ? char?*str2={"Hello?World"};

? ? const?char?*ptr1?=str1;

? //常量指針--指向字符串常量,所指向的字符串內(nèi)容不能變,但是指向的地址可以變化 ? ? ptr1=str2;//?正確?因為指向的地址是可以變化的 ? ? printf("%s?\n",ptr1);

}

//輸出?Hello?World


?voidmain(){

? ? char?*str1={"Hello"};

? ? char?*str2={"Hello?World"};

? ?const?char?*ptr1?=str2;

? ?//常量指針--指向字符串常量,所指向的字符串內(nèi)容不能變,但是指向的地址可以變化 ? ? ptr1='A';//?錯誤?因為指向的地址是內(nèi)容是不可以變化的 ? ? printf("%c?\n",ptr1);}

//編譯錯誤????error?C2440:?'='?:?cannot?convert?from?'char'?to?'const?char?*'

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • __block和__weak修飾符的區(qū)別其實是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,593評論 0 6
  • 最全的iOS面試題及答案 iOS面試小貼士 ———————————————回答好下面的足夠了-----------...
    大羅Rnthking閱讀 1,042評論 0 2
  • 1.寫一個NSString類的實現(xiàn) +(id)initWithCString:(c*****t char *)nu...
    韓七夏閱讀 3,873評論 2 37
  • 什么時候會經(jīng)?;貞洑?,朋友聚會,同學聚會,所以的回憶都會把他拿出來講,晚上的聚會,回憶了我高中三年狗血而又難忘的生...
    一二節(jié)閱讀 315評論 0 1
  • 斜陽從云間穿過照射在樹干上,樹干上的陽光慢慢地移動了的位置。干枯的樹枝在不知不覺間萌出了星星點點的新芽。凜...
    佳嘉_閱讀 309評論 3 6

友情鏈接更多精彩內(nèi)容