C 語言入門

【C 語言入門】存取陣列元素的原理

這次主要說明存取陣列元素的原理。每次執行時元素的起始位址都有可能不同,假設第一個元素的起始位址為 20000。如果 int 佔據 4個位元組,則下一個元素的起始位址是前一個元素的起始位址+4。

【C 語言入門】存取陣列外元素的問題

接下來舉另一個例子。 陣列 a 的大小為 3,陣列 b 的大小為 5,陣列 b傳入大小為 3 的 max3 是 ok 的。 只是輸出結果: b 的最大值雖然也是 9,但是由於 v 最多只能讀取到位置 3 的元素,而最大值在位置 5。 這支程式雖然執行上沒問題,但是輸出結果是錯的。 以下是比較正確的寫法:

【C 語言入門】可對任意大小陣列求最大值的函式

max3 函式裡的參數傳遞的陣列的大小有跟沒有都是一樣的,寫了反而被限制,所以可以不寫。 陣列 v 沒辦法決定自己多大,是由 b 傳進來的引數決定的,不過在 maxv 我們又需要知道陣列 v 有多大,因此需要一個額外的參數,這裡用的參數是 N。 v[] 不是陣列,是一種指標,之後討論到指標的時候會詳細說明。

【C語言入門】在函式間傳遞陣列

我們需要先產生一個陣列,再把陣列當參數傳到函式。 在函數間傳送陣列 當函式參數式陣列型態時,與一般資料型態行為不一樣。一般資料型態會將引數複製一份候傳入函式,但是陣列型態卻不會複製一份陣列。 為了做出等於函式回傳的效果,我們可以將陣列作為引數傳入。當陣列作為引數傳入時,陣列內容的修改會套用到這個傳入的陣列本身。 為了與一般資料型態的行為相符,C語言導入了指標來處理各種陣列複製與存取的行為。

【C 語言入門】用一維陣列表示九宮格

九宮格不只可以用二維陣列表達,也可用一維陣列的方式輸出。 程式的第一個迴圈是把數字 1 到 9 存入一維陣列,第二個 for 迴圈是把數字以九宮格的方式輸出。 可以看到這裡用了通過數字的餘數來判斷是否需要換行。 需要換行的都是在 3, 6 9 的時候, 判斷還需要注意幾點:1. 只有數字 3, 6 9 適用2. 對其他數字不適用 那觀察得出取數字除以 3 的餘數。 由於數字從 0 開始 ,到位子 3 為 2。 因此如果餘數為 2,則換行。

【C 語言入門】 用二維陣列表示九宮格

如果要提取 1 號元素裡的 2 號元素,需要以 v[1][2] 表示。 上述這個程式的第一個迴圈是把數字 1 到 9 存到 v 的二維陣列中,第二個迴圈再把陣列裡的元素分別輸出。 要把數字 1 到 9 存入陣列中還有另一個方法:

【C 語言入門筆記】陣列的陣列

陣列的變數和一般的變數沒有甚麼不同。 這裡的 v 有 v[0] 和 v[1],其中 v[0] 和 v[1] 也包括了 3 個元素整數的陣列。 v 是陣列,因此可以使用陣列初始化的大括弧。 v[0] 為 {1, 2, 3},v[1] 為 {4, 5, 6}。 v[0][0] = 1 v[0][1] = 2 v[0][2] = 3 v[1][0] = 4 v[1][1] = 5 v[1][2] = 6 也可以這樣表達。 v[0] = {1, 2} v[1] = {3, 4} v[2] = {5, 6} …

【C 語言入門筆記】陣列的陣列 Read More »

【C 語言】陣列的記憶體配置

如果再宣告定義變數的時候沒給值,大部分情況下它的值是一個未定義行為,也就是我們不知道它的值是多少。 因此我們可以先賦予它值。 接下來我們看陣列。 v 是一個陣列,有 6 個元素,分別是 v[0] 到 v[5],每個元素都是一個整數。 我們也可以先賦予陣列值。 數字 1 到 6 是分別存到 v[0] 到 v[5] 的整數。 陣列本身也是變數,每個元素本身也是變數。