C語(yǔ)言-學(xué)OC的基礎(chǔ)

C是OC學(xué)習(xí)的基礎(chǔ)鸯檬,OC是從C衍生出來(lái)的决侈,所以先學(xué)習(xí)C語(yǔ)言,主要學(xué)習(xí)編程語(yǔ)言的語(yǔ)法喧务,積累一個(gè)編程思想

我搜到了一個(gè)很好的C語(yǔ)言入門(mén)技術(shù)博客赖歌,覺(jué)得很好,借鑒到這里記錄起來(lái)功茴,膜拜學(xué)習(xí)

C語(yǔ)言快速入門(mén)系列列表

C語(yǔ)言快速入門(mén)系列(一)

C語(yǔ)言快速入門(mén)系列(二)

C語(yǔ)言快速入門(mén)系列(三)

C語(yǔ)言快速入門(mén)系列(四)

C語(yǔ)言快速入門(mén)系列(五)

C語(yǔ)言快速入門(mén)系列(六)

C語(yǔ)言快速入門(mén)系列(七)

C語(yǔ)言快速入門(mén)系列(八)

C語(yǔ)言快速入門(mén)系列(九)

根據(jù)變量的作用域庐冯,可分為:

  1. 局部變量:
    1> 定義:在函數(shù)(代碼塊)內(nèi)部定義的變量
    2> 作用域:從定義變量的那一行開(kāi)始,一直到代碼塊結(jié)束
    3> 生命周期:從定義變量的那一行開(kāi)始分配存儲(chǔ)空間坎穿,代碼塊結(jié)束后展父,就會(huì)被回收
    4> 沒(méi)有固定的初始值

  2. 全局變量
    1> 定義:在函數(shù)外面定義的變量
    2> 作用域:從定義變量的那一行開(kāi)始,一直到文件結(jié)尾(能被后面的所有函數(shù)共享)
    3> 生命周期:程序一啟動(dòng)就會(huì)分配存儲(chǔ)空間玲昧,程序退出時(shí)才會(huì)被銷(xiāo)毀
    4> 默認(rèn)的初始值就是0

題另出一些OC中經(jīng)常用到的難點(diǎn)

1. extern

  • extern 和 外部函數(shù)

    • 外部函數(shù):定義的函數(shù)能被本文件和其他文件訪問(wèn)
    • 默認(rèn)情況下所有的函數(shù)都是外部函數(shù)
    • 不允許有同名的外部函數(shù)
  • extern 對(duì)外部函數(shù)的作用

    • 完整地 定義 和 聲明 一個(gè)外部函數(shù)
    • extern 可以省略犯祠,默認(rèn)情況下 聲明 和 定義 的函數(shù)都是外部函數(shù)
extern void june(); // 完整地聲明一個(gè)外部函數(shù),extern 可以省略
extern void june() // 完整地定義一個(gè)外部函數(shù)酌呆,extern 可以省略
{
  ...
}
  • 全局變量 分2種 : 外部變量、 內(nèi)部變量

  • extern 和 外部變量

    • 外部變量
    • 默認(rèn)情況下搔耕,所有的外部變量都是全局變量
    • 不同文件中的同名 外部變量隙袁,都代表著同一個(gè)變量
  • extern 對(duì)外部變量的作用

    • 聲明 一個(gè)外部變量
    • 可以聲明在文件頭部痰娱,也可以在函數(shù)里面聲明,意味著在文件的任意位置都可以聲明

2. static

  • static 和 內(nèi)部函數(shù)

    • 內(nèi)部函數(shù):定義的函數(shù)只能被本文件訪問(wèn)菩收,其他文件不能訪問(wèn)
    • 允許不同的文件中有同名的 內(nèi)部函數(shù)
  • static 對(duì)內(nèi)部函數(shù)的作用

    • 定義 和 聲明一個(gè)內(nèi)部函數(shù)
static void june(); // 聲明一個(gè)內(nèi)部函數(shù)
static void june() // 定義一個(gè)內(nèi)部函數(shù)
{
  ...
}
  • static 和 全局內(nèi)部變量

    • 全局內(nèi)部變量:定義的 全局內(nèi)部變量 只能被本文件訪問(wèn)梨睁,不能被其他文件訪問(wèn)
    • 不同文件中的同名 全局內(nèi)部變量,互不影響
  • static 對(duì)全局內(nèi)部變量的作用

    • 定義一個(gè) 全局內(nèi)部變量(全部變量的作用域僅限于當(dāng)前文件)
  • static 和 局部變量

  • static 對(duì)局部變量的作用

    • 讓局部變量只初始化一次
    • 局部變量在程序中只有一份內(nèi)存
    • 延長(zhǎng)局部變量的生命周期娜饵,直到程序結(jié)束坡贺,才會(huì)被銷(xiāo)毀
    • 并不會(huì)改變局部變量的作用域
  • static 修飾局部變量使用場(chǎng)合

    • 如果某個(gè)函數(shù)的調(diào)用頻率特別高
    • 這個(gè)函數(shù)內(nèi)部的某個(gè)變量值是固定不變的

3. const

  • const 和 全局常量

    • 例: #define a 0.5 VS const CGFloat a = 0.5;
    • 類(lèi)似宏,不能改值
    • 有多少使用宏的地方箱舞,就會(huì)開(kāi)辟多少臨時(shí)存儲(chǔ)空間
    • 使用 const 遍坟,就只會(huì)開(kāi)辟一個(gè)存儲(chǔ)空間
    • 還可以使用 extern 全局引用
    • 如果 extern 全局引用的是個(gè)常量,最好加一個(gè) const
    • 例:extern const CGFloat a (編譯階段就能很快發(fā)現(xiàn)晴股,避免修改被 const 修飾的常量愿伴,運(yùn)行時(shí)崩潰)【extern 可以寫(xiě)成 UIKIT_EXTERN(一定要引入 UIKit 框架)】
  • const 和 指針

 定義一個(gè)指針變量
 int *p = NULL;

 定義1個(gè) int 類(lèi)型的變量
 int a = 10;
 p = &a; // 把 a 的地址給了p,指針變量 p 指向 a 
 *p = 20; // 將 a 的值改為了 20

  const右邊是誰(shuí)电湘,就代表著修飾的是誰(shuí)

  const int *p  : 這樣寫(xiě)代表 `*p` 是一個(gè)常量隔节,const右邊是 `*p`,代表 `*p`` 不能修改所指向變量的值寂呛,p 可以改怎诫,可以指向其他變量
  int const *p  : 同上
  int * const p :  這樣寫(xiě)代表 `p` 是一個(gè)常量,const右邊是 `p`贷痪,代表 `p` 不能被修改幻妓,不能再指向其他變量,`*p` 可以修改所指向變量的值
  const int * const p : (指針 p指向的變量 和 p 指向的變量值都不可修改)
  • const 和 OC字符串
    • NSString * const name = @"Vampire";
    • 修改字符串的值是 name = @"June"呢诬;
    • 所以涌哲,const 右邊是 name,修飾的是 name 尚镰,才不能修改
    • *name 在 OC 中是不合理的阀圾,所以沒(méi)有意義

4. 數(shù)組 和 指針

```
int * p;
int numbers[4] = {1, 2, 3, 4};

## 指針 p 的加減法運(yùn)算

// 指針 p + N 
* p 里面存儲(chǔ)的地址值 + N * 所指向類(lèi)型所占用的字節(jié)數(shù)
// 指針 p - N 
* p 里面存儲(chǔ)的地址值 - N * 所指向類(lèi)型所占用的字節(jié)數(shù)

## 數(shù)組名 含義
* 存儲(chǔ)的是`數(shù)組首元素`的地址
* 等價(jià)于 一個(gè)指向`數(shù)組首元素`的指針
* `數(shù)組名 + 1` 的跨度 : `數(shù)組首元素`的占用字節(jié)數(shù)

## 其他結(jié)論
* `&num + 1` 的跨度 : `num` 的占用字節(jié)數(shù)


* numbers : 相當(dāng)于 &numbers[0],等價(jià)于指向 numbers[0] 的指針
* &numbers : 等價(jià)于指向 numbers 數(shù)組的指針


int num[2][2] = {
   {1, 2} // num[0]
   {3, 4} // num[1]
};

// num[0] : 相當(dāng)于 &num[0][0],等價(jià)于指向 num[0][0] 的指針
// num[1] : 相當(dāng)于 &num[1][0]狗唉,等價(jià)于指向 num[1][0] 的指針
// num : 相當(dāng)于 & num[0],等價(jià)于指向 num[0] 的指針
// & num : 等價(jià)于指向 num 數(shù)組的指針
```

**一道面試題**

```
int number[4] = {10, 20, 30, 40};
int *p = (int *)(& number + 1)
NSLog(@"%d", *(p - 1));         // 40
```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末初烘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子分俯,更是在濱河造成了極大的恐慌肾筐,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缸剪,死亡現(xiàn)場(chǎng)離奇詭異吗铐,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)杏节,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)唬渗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)典阵,“玉大人,你說(shuō)我怎么就攤上這事镊逝∽嘲。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵撑蒜,是天一觀的道長(zhǎng)歹啼。 經(jīng)常有香客問(wèn)我,道長(zhǎng)座菠,這世上最難降的妖魔是什么狸眼? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮辈灼,結(jié)果婚禮上份企,老公的妹妹穿的比我還像新娘。我一直安慰自己巡莹,他們只是感情好司志,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著降宅,像睡著了一般骂远。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上腰根,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天激才,我揣著相機(jī)與錄音,去河邊找鬼额嘿。 笑死瘸恼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的册养。 我是一名探鬼主播东帅,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼球拦!你這毒婦竟也來(lái)了靠闭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤坎炼,失蹤者是張志新(化名)和其女友劉穎愧膀,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體谣光,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡檩淋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萄金。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狼钮。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碳柱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出熬芜,到底是詐尸還是另有隱情,我是刑警寧澤福稳,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布涎拉,位于F島的核電站,受9級(jí)特大地震影響的圆,放射性物質(zhì)發(fā)生泄漏鼓拧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一越妈、第九天 我趴在偏房一處隱蔽的房頂上張望季俩。 院中可真熱鬧,春花似錦梅掠、人聲如沸酌住。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)酪我。三九已至,卻和暖如春且叁,著一層夾襖步出監(jiān)牢的瞬間都哭,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工逞带, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留欺矫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓展氓,卻偏偏與公主長(zhǎng)得像穆趴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子带饱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容