指標(一),指標(
談到c語言,不得不提指標,有多少英雄好漢栽在指真上。利用指計可以很方便的使用數組和字串(C#中的String類型就是參考型別,也就是指標類型)。指標支援動態分配記憶體,可以讓程式更簡介,提高效率。 “要想精確打擊,就要人工引導”---軍旅劇中飛彈兵經常會這樣說,指標類似於人工引導的座標。靈活,易用,同時也很複雜,引導錯誤就是毀滅性的打擊。舉個栗子:移動大廈一層有10個方間,編號依次是1-10.其中2號給A公司租用,5-8給公司租用。以每個房間的編號第一個為公司的地址。如果我們要給A公司送快遞,那就是給地址為2的公司送快遞。如果給B公司送快遞就是給地址為5的公司送快遞; 同樣,在編程中系統為了管理記憶體,給記憶體中的每一個位元組都設一個編號。所有變數在記憶體中要戰勝一個或幾個連續的位元組。其中第一個位元組就是該變數的地址。若有INT 類型的A,編譯時間系統會為A分配兩個位元組的儲存單元。假設這兩個位元組的編號分別為:001、002那邊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所指向的地址中的值:102017-03-21 22:20:29.836091 ZhiZhen[8931:355806] a的值已經改變,其值為:20