指針(一)

      談到c語言,不得不提指針,有多少英雄好漢栽在指真上。利用指計可以很方便的使用數組和字符串(C#中的String類型就是引用類型,也就是指針類型)。指針支持動態分配內存,可以讓程序更簡介,提高效率。

     “要想精確打擊,就要人工引導”---軍旅劇中導彈兵經常會這樣說,指針類似於人工引導的座標。靈活,易用,同時也很複雜,引導錯誤就是毀滅性的打擊。舉個栗子:移動大廈一層有10個方間,編號依次是1-10.其中2號給A公司租用,5-8給公司租用。以每個房間的編號第一個爲公司的地址。如果我們要給A公司送快遞,那就是給地址爲2的公司送快遞。如果給B公司送快遞就是給地址爲5的公司送快遞;

      同樣,在編程中系統爲了管理內存,給內存中的每一個字節都設一個編號。所有變量在內存中要戰勝一個或幾個連續的字節。其中第一個字節就是該變量的地址。若有INT 類型的A,編譯時系統會爲A分配兩個字節的存儲單元。假設這兩個字節的編號分別爲:001002那邊A的地址就是001;

類型* 變量名;---定義指針

&取地址運算符,後面會緊跟一個變量,用來讀取變量的保存地址;

*:取變量的運算符。用於讀取該指針變的值;

//
//  main.m
//  ZhiZhen
//
//  Created by 程英暾 on 2017/3/21.
//  Copyright  2017年 程英暾. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
       
        int a=10;//變量
        int* b;//指針類型的b
        b=&a;//將A的地址給B,也可以說B代表A的地址
        NSLog(@"打印指針B所指向的地址中的值:%d",*b);//打印指針中所指向a的值
        *b=20;//給指針賦值,也就是通過B給變理量a賦值
        NSLog(@"a的值已經改變,其值爲:%d",a);//a的值改變了
    }//@autoreOVER
    return 0;
}

--------------------result--------------------

2017-03-21 22:20:29.835850 ZhiZhen[8931:355806] 打印指針B所指向的地址中的值:10

2017-03-21 22:20:29.836091 ZhiZhen[8931:355806] a的值已經改變,其值爲:20


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章