//檔案1
int mango[100];
//檔案2
extern
int *mango;
//開始使用指標訪問檔案1中的陣列
上面的例子是型別不匹配錯誤,無法正常執行,錯誤和下面的例子相似
//檔案1
int mango;
//檔案2
對於extern int * mango; 當用mango[2]來訪問的時候,首先,會按照圖b所示對指標解引用,然後按照圖a對下標進行偏移並直接訪問,更為正式的說法:
1、取得mango的位址,提取儲存於此處的指標;
2、把下標所表示的偏移量與指標的值相加,產生乙個位址;
3、訪問上面的位址,得到int
指標
陣列儲存資料的位址
儲存資料
間接訪問資料,首先取得指標的內容,把它作為位址,然後從這個位址提取資料。如果有乙個下標[i],就把指標的內容加上i的偏移作為位址,從中提取資料
直接訪問資料,a[i],只是簡單的訪問a+i的位址取得資料
通常用於動態資料結構
通常用於儲存數目固定且資料型別相同的元素
相關的函式malloc/free
隱式分配和刪除
通常指向匿名資料
自身即為資料名
char* p = "abcdef";
int *pn = 2;//error
char a = "abcdef"
陣列和指標都可以在定義中使用常量字串初始化,機制卻不一樣。定義指標時,編譯器只是給指標本身分配空間,除非在定義的時候賦值乙個常量字串進行初始化。只有常量字串才可以如此,浮點數之類絕對不行。
ansi c規定,初始化指標時的常量字串為唯讀,如果試圖通過指標改變字串的值,會出現未定義的行為。
與指標相反,由常量字串初始化的陣列是可以修改的。
c專家程式設計
lzbus的前世今生
現在的工業匯流排中,rs485匯流排使用得十分普遍。rs485匯流排使用一對雙絞線實現一主多從的半雙工傳輸模式。但人們將這套匯流排應用在系統中時,會發現其攜帶的負載並不是理想的那麼多,傳輸距離也不盡人意 最讓人光火的是這套匯流排並不支援星形連線,且rs485的轉換晶元經常會莫明的損壞。在可燃氣體報警...
eMMC的前世今生
討論到emmc的發展歷程,必須要從介紹flash的歷史開始 flash分為兩種規格 nor flash和nand flash,兩者均為非易失性快閃儲存器模組。1988年,intel首次發出nor flash技術,徹底改變了原先由eprom和eeprom一統天下的局面。nor類似於dram,以儲存程式...
Wireshark 的前世今生
這是乙個無關技術的小故事。但是作為wireshark愛好者,了解一下這個軟體的前世今生也是極好的,誰不想在中午和同 ling 事 dao 一起吃飯的時候講個業內小故事,顯得自己業務精湛又品味不俗呢?故事要從20世紀90年代開始說起。那時的it業欣欣向榮 摩托羅拉正野心勃勃地實施銥星計畫 google...