檔案1中 定義陣列 檔案2 宣告為指標
char str[ ] =」abcd」;//在檔案1中
extern char *str;//在檔案2中
檔案1中定義乙個陣列str,裡面存了abcd
假設陣列首元素的首位址為0x00000001
那麼 0x00000001裡面存了a,0x00000002裡面存了b
檔案2中宣告成了乙個指標變數, 指標變數的位址是0x0000001
裡面存的0x61(也就是a 的16進製制) 被理解成了乙個位址。
通過這個位址獲取到的值必然是錯誤的
在乙個檔案中可以的原因,就是把陣列首元素首位址存到指標變數裡面。而兩個檔案相當於直接把陣列的位址當作指標的位址,那麼陣列裡的元素就會變成指標指向的位址
定義為指標,宣告為陣列
檔案1中 定義指標 檔案2 宣告為陣列 char str abcd 在檔案1中 extern char str 在檔案2中 在檔案1中str這個變數裡面儲存了乙個字串的首位址假設是0x12345678 這個位址裡面存了a 後面的位址存放了b 依次類推 在檔案2中使用的時候會出現的問題 char c ...
指標和陣列的定義與宣告
在這裡我們做種強調的是在兩個檔案中,定義為陣列宣告為指標和定義為指宣告為陣列的這輛中情況。那麼我們就需要兩個原始檔test.c和main.c。定義為陣列,宣告為指標 test.c char arr abcdef main.c define crt secure no warnings 1 inclu...
struct的申明,宣告為指標與變數的區別
include stdio.h include stdlib.h struct ssd ch lun alloc int main void struct ssd ch lun alloc alloc 12 陣列變數,已經賦值的情況下,在棧中 struct ssd ch lun alloc test...