1. 程式人生 > >C語言指標原來也可以這麼的通俗易懂!

C語言指標原來也可以這麼的通俗易懂!

C語言是面向過程的,而C++是面向物件的

C和C++的區別:

C是一個結構化語言,它的重點在於演算法和資料結構。C程式的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。

C++,首要考慮的是如何構造一個物件模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取物件的狀態資訊得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”。

C與C++的最大區別:在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”,而就語言本身而言,在C中更多的是演算法的概念。那麼是不是C就不重要了,錯!演算法是程式設計的基礎,好的設計如果沒有好的演算法,一樣不行。而且,“C加上好的設計”也能寫出非常好的東西。

相信對於學習過C語言的人來說指標一直是一個難點。其實C語言也就只有這麼一個難點,攻破了這個難點,要做的就是不斷實踐了,畢竟想好學好一門語言不實踐是不行的。

每一個變數都有一個記憶體位置,每一個記憶體位置都定義了可使用連字號(&)運算子訪問的地址,它表示了在記憶體中的一個地址,我們先了解什麼是記憶體地址以及如何訪問它。看下面的例項,它將輸出定義的變數地址:

小編推薦一個學C語言/C++的學習裙【 815393859】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多幹貨和技術資料分享!

當上面的程式碼被編譯和執行時,它會產生下列結果:

接下來讓我們看看什麼是指標吧!

指標是一個變數,其值為另一個變數的地址,即記憶體位置的直接地址。就像其他變數或常量一樣,您必須在使用指標儲存其他變數地址之前,對其進行宣告。指標變數宣告的一般形式為:

type *name;

這裡的type 是指標的基型別,它必須是一個有效的 C 資料型別,name 是指標變數的名稱。用來宣告指標的星號 * 與乘法中使用的星號是相同的。但是,在這個語句中,星號是用來指定一個變數是指標。以下是有效的指標宣告:

所有指標的值的實際資料型別,不管是整型、浮點型、字元型,還是其他的資料型別,都是一樣的,都是一個代表記憶體地址的長的十六進位制數。不同資料型別的指標之間唯一的不同是,指標所指向的變數或常量的資料型別不同。

在此列出一些平常可能用到的指標例子

小編推薦一個學C語言/C++的學習裙【 815393859】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多幹貨和技術資料分享!

接下來我們看下什麼是函式指標

一個函式總是佔用一段連續的記憶體區域,函式名在表示式中有時也會被轉換為該函式所在記憶體區域的首地址,這和陣列名非常類似。我們可以把函式的這個首地址(或稱入口地址)賦予一個指標變數,使指標變數指向函式所在的記憶體區域,然後通過指標變數就可以找到並呼叫該函式。這種指標就是函式指標。

函式指標的定義形式為:

returnType (*pointerName)(param list);

returnType 為函式返回值型別,pointerNmae 為指標名稱,param list 為函式引數列表。

注意:

( )的優先順序高於*,第一個括號不能省略,如果寫作returnType *pointerName(paramlist);

就成了函式原型,它表明函式的返回值型別為returnType *。

下面寫一個簡單的栗子:

編譯並執行結果如下:

上面對msg函式進行了呼叫,fun_p是一個函式指標。

總結:

指標(Pointer)就是記憶體的地址,C語言允許用一個變數來存放指標,這種變數稱為指標變數。指標變數可以存放基本型別資料的地址,也可以存放陣列、函式以及其他指標變數的地址。

常見的指標含義:

小編推薦一個學C語言/C++的學習裙【 815393859】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多幹貨和技術資料分享!

這些是C/C++能做的

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