在這裡我們做種強調的是在兩個檔案中,定義為陣列宣告為指標和定義為指宣告為陣列的這輛中情況。那麼我們就需要兩個原始檔test.c和main.c。
定義為陣列,宣告為指標
test.c
char arr = "abcdef";
main.c
#define _crt_secure_no_warnings 1
#include
#include
extern
char *arr; //宣告
int main()
就會出現以下的錯誤:
就會出現,讀取位置發生訪問衝突
定義為指標,宣告為陣列
test.c
char *p = "abcdef";
main.c
#define _crt_secure_no_warnings 1
#include
#include
extern
char arr; //這裡只是說他是乙個陣列,不需要填寫陣列個數
int main()
執行之後就會發現,呀!我的程式執行出來是隨機值,不對呀,我明明將它存放進去了。
那我們如何在定義為指標、宣告為陣列的情況下,取出指標中所指向的字串?
#define _crt_secure_no_warnings 1
#include
#include
extern
char p; //這裡只是說他是乙個陣列,不需要填寫陣列個數
總結:1. 定義和宣告使用的是同一塊空間
2. 指標大小是4個位元組,陣列大小不一定
3. 指標和陣列不一樣
指標陣列和陣列指標 和 指標和陣列的定義與宣告
舉個栗子來區分以下指標陣列和陣列指標 int arr1 10 是指標陣列,arr1和 的結合性更高一些,所以arr1先與 結合成為陣列,陣列有10個元素,每個元素的型別都為int 型,所以 int arr1 10 是存放整型指標的陣列。int p 10 是陣列指標,p先與 結合,說明p是乙個指標變數...
指標和陣列(第五節 定義與宣告)
檔案1中定義如下 chara 100 檔案2中宣告如下 externchar a 關於extern的用法,以及定義和宣告的區別,請複習第一章 這裡,檔案1中定義了陣列a,檔案2中宣告它為指標。這有什麼問題嗎?平時不是總說陣列與指標相似,甚至可以通用嗎?但是,很不幸,這是錯誤的。通過上面的分析我們也能...
定義為指標,宣告為陣列
檔案1中 定義指標 檔案2 宣告為陣列 char str abcd 在檔案1中 extern char str 在檔案2中 在檔案1中str這個變數裡面儲存了乙個字串的首位址假設是0x12345678 這個位址裡面存了a 後面的位址存放了b 依次類推 在檔案2中使用的時候會出現的問題 char c ...