定義為陣列,宣告為指標

2021-07-10 21:52:55 字數 462 閱讀 5008

檔案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...