C語言程式設計基礎:指標陣列與陣列指標

weixin_33890499發表於2018-01-25

(1)、C語言是程式導向的,而C++是物件導向的                                                                                                                           (2)、C和C++的區別:C是一個結構化語言,它的重點在於演算法和資料結構。C程式的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。C++,首要考慮的是如何構造一個物件模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取物件的狀態資訊得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”。                                                                                                                                                                                 (3)、C與C++的最大區別:在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”,而就語言本身而言,在C中更多的是演算法的概念。那麼是不是C就不重要了,錯!演算法是程式設計的基礎,好的設計如果沒有好的演算法,一樣不行。而且,“C加上好的設計”也能寫出非常好的東西。

9850446-dec28d90e833cb27.jpg

這些是C/C++能做的

伺服器開發工程師、人工智慧、雲端計算工程師、資訊保安(黑客反黑客)、大資料 、資料平臺、嵌入式工程師、流媒體伺服器、資料控解、影象處理、音訊視訊開發工程師、遊戲伺服器、分散式系統、遊戲輔助等

9850446-a35f9c9cc490da59

一、指標陣列

        在這一節中我們來學習一個陣列,這個陣列比較特殊,也比較普通。說它特殊是因為這個陣列是指標的陣列,也就是說我們有一個陣列,這個陣列裡存放的變數型別是指標型變數;說它普通是因為陣列變數其實與其它普通變數沒有什麼區別,指標變數就是一種可以存放記憶體地址的變數,所以它們也可以被定義成一串連續的變數集合,這個集合就是指標陣列。例如,我們可以定義一組變數,這組變數就是一個陣列,共有4個元素,而每一個元素都是一個指向int型變數的指標:

9850446-f4823d2f054231b9.png

在這裡我們要注意一下運算子的優先順序,由於 * 的優先順序比 [] 的優先順序低,所以整個表示式中p要先與[4]做結合表示的是一個陣列,再與 * 結合表示每一個陣列元素的型別是一個指標變數。我們再來看一看多維陣列與多維指標陣列:

9850446-4c9b125602ed36db.png

                     值得注意的地上是多維陣列表示的是整型多維陣列表示的是很陣列中每一個元素的型別都 是型型的變數,而多維指標陣列中表示的是陣列中每一個元素的型別都是指標型變數。而在迴圈賦值時我們將陣列指標陣列中的每一個指標都指向了整型陣列中的每一個元素。

二、指標陣列與陣列指標

        接下來我們來看一看一個非常容易混淆的兩個概念:“指標陣列”與“陣列指標”。

指標陣列:表示的是一個陣列,陣列中每一個變數都是指標型變數;

陣列指標:表示的是一個指標型別的變數,這個指標變數指向的是一個陣列。

        我們用一個例子來仔細對它們的區別做說明:

9850446-375279e1302df8f4.png

對於上面程式中兩種不同的指標陣列和陣列指標請大家一定要分清。int *p[2][3];所表示的是一個二維陣列,陣列的每一個元素都是一個指標變數。也就是說,這是一個具有6個指標型變數的陣列;而int (*q)[3] = array;所表示的是陣列指標,注意:這裡只定義了一個指標型變數q,它指向一個二維陣列array。而對於q來說,它告訴編譯器,這是一個指標,這個指標指向一個具有3列的陣列變數。

        關於這兩個概念不太容易理解,請大家自己動手編寫相關的程式,通過編寫程式、檢視其執行結果來慢慢消化這兩個概念,並熟練掌握它們的原理與用法。

9850446-ce7490a5169eb74f.png
9850446-8d7111a545d95855.png
9850446-dbe4bafa0f865a91.png
9850446-416f7654f304aa66.png

相關文章