第四章 指標和陣列
宣告和定義的最主要區別:宣告並未非配記憶體, 定義一定分配了記憶體。
1、當我們在檔案1中,定義:
int mango[100];
在檔案2中:宣告:
extern int *mango;
這是不對的,當你宣告為extern int *mango時,編譯器理所當然認為mango是乙個指標,在檔案2中,我用sizeof(mango),結果為4.
定義指標時,編譯器並不為指標所指向的物件分配記憶體空間,它只分配指標本身的空間。除非在定義的同時賦給指標乙個字串常量進行初始化。例:
char *p = "abcdefg";
注意:只有對字串常量才是如此。不能指望為浮點數之類的常量分配空間,如:
float *pip = 3.14; /*錯誤, 無法通過編譯*/
在ansi c中,初始化指標時所建立的字串常量被定義為唯讀的。如果試圖通過指標修改這個字串的值,程式就會出現未定義的行為。
陣列也可以用字串常量來進行初始化, 如:
char a = "abcdefg;
與指標不同的是, 由字串常量初始化的陣列是可以修改的。
對於陣列char a[10];
&a[0]和&a有何異同呢?
很明顯,&a[0]表示的是陣列首元素的位址,即相當於a, 而&a則表示的是整個陣列的首位址, 舉個例子
char a[10];
若陣列a首元素位址為0xbfb1b022, 則
&a = 0x0xbfb1b022
&a + 1 = 0x0xbfb1b02c
&a[0] = 0x0xbfb1b022
&a[1] = 0x0xbfb1b023
今天先看到這裡,過幾天再論一下陣列和指標!
C 第四章 陣列
二維陣列 陣列是一組相同元素的集合.陣列的建立方式 type t arr name const n type t 是指數組的元素型別 const 是乙個 常量表示式,用來指定陣列的大小 陣列建立的例項 1 int arr1 10 2 int count 10 int arr2 count 3 cha...
第四章 程式設計
選擇語言的原則 最少的工作量原則 最少技巧性原則 最少錯誤原則 最少維護原則 減少記憶原則 總原則 先求正確後求快 先求清晰後求快 求快不忘保持程式正確性 保持程式整潔以求快 不要因效率而犧牲清晰 好程式標準 易於測試和除錯 易於維護 易於修改 設計簡單 高效率結構化程式設計主要包括兩方面 在編寫程...
第四章 陣列
一維陣列的定義 當陣列中每個元素只帶有乙個下標時,我們稱這樣的陣列為一維陣列。陣列的定義格式如下 型別識別符號 陣列名 常量表示式 說明 陣列名的命名規則與變數名的命名規則一致。常量表示式表示陣列元素的個數。可以是常量和符號常量,但不能是變數。例如 int a 10 陣列a定義是合法的 int b ...