C學習筆記(4) 指標的應用(第一部分)

2022-07-27 22:03:16 字數 2033 閱讀 2016

1.指標(pointer)概念:

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

在這裡,type是指標的基型別,它必須是乙個有效的 c 資料型別,var-name是指標變數的名稱。用來宣告指標的星號 * 與乘法中使用的星號是相同的。

2.指標的應用:

a. 使用指標時會頻繁進行以下幾個操作:定義乙個指標變數、把變數位址賦值給指標、訪問指標變數中可用位址的值。這些是通過使用一元運算子*來返回位於運算元所指定位址的變數的值。例子:

b. 在變數宣告的時候,如果沒有確切的位址可以賦值,為指標變數賦乙個 null 值是乙個良好的程式設計習慣。賦為 null 值的指標被稱為指標。

null 指標是乙個定義在標準庫中的值為零的常量。例子:int  *ptr = null;   sub :在大多數的作業系統上,程式不允許訪問位址為 0 的記憶體,因為該記憶體是作業系統保留的。然而,記憶體位址 0 有特別重要的意義,它表明該指標不指向乙個可訪問的記憶體位置。但按照慣例,如果指標包含空值(零值),則假定它不指向任何東西。

3. 深入談指標的運動:

a.

指標的算術運算:

c 指標是乙個用數值表示的位址。因此,您可以對指標執行算術運算。可以對指標進行四種算術運算:++、--、+、-。

假設ptr是乙個指向位址 1000 的整型(int)指標,是乙個 32 位的整數,讓我們對該指標執行下列的算術運算: ptr++; 

ptr將指向1004的位址。相同,如果ptr是個字元(char)的指標,其將指向1001位址。  因為int的長度是4位元組,而char是1位元組。

b.指標陣列(pointer array):

假如我們讓陣列儲存指向 int 或 char 或其他資料型別的指標。 例如:int *ptr[max];

在這裡,把 ptr 宣告為乙個陣列,由 max 個整數指標組成。因此,ptr 中的每個元素,都是乙個指向 int 值的指標。下面的例項用到了三個整數,它們將儲存在乙個指標陣列中。

sub:  指標陣列(pointer array) 和 陣列指標(array pointer)的區別!

指標陣列:表示的是乙個由指標變數組成的陣列,也就是說其中的元素都是指標變數。

陣列指標:表示的是這是個指向陣列的指標,那麼該指標變數儲存的位址就必須是陣列的首位址,得是個指向行的位址,如a[2][3]陣列中的 a,a+1 等,不能是具體的指向列的位址,如 &a[0][1], &a[1][1] 這類位址。

c.指向指標的指標:

定義:指向指標的指標是一種多級間接定址的形式,或者說是乙個指標鏈。通常,乙個指標包含乙個變數的位址。當我們定義乙個指向指標的指標時,第乙個指標包含了第二個指標的位址,第二個指標指向包含實際值的位置。

int **var;

d.傳遞指標給函式:

c 語言允許您傳遞指標給函式,只需要簡單地宣告函式引數為指標型別即可。

下面的例項中,我們傳遞乙個無符號的 long 型指標給函式,並在函式內改變這個值:

(通過這種操作,你可以通過改變某個記憶體位址上的變數的數值來改變其數量。)

e.從函式返回指標:

int * myfunction()

另外,c 語言不支援在呼叫函式時返回區域性變數的位址,除非定義區域性變數為static變數。

引用:

django應用 第一部分

python m django version 如果這行命令輸出了乙個版本號,證明你已經安裝了此版本的 django 如果你得到的是乙個 no module named django 的錯誤提示,則表明你還未安裝。這個教程是為了 django 2.0 寫的,它支援 python 3.4 和後續版本。...

linux筆記第一部分

開源系統,可以自由傳播,目前後台服務端絕大部分都是linux程式執行平台,主要是因為以下幾點 unix的優秀特性 linux的常用版本redhat和centos,目前主流使用的centos7 centos6安裝鏈結 因linux不同於windows,所以linux事實上並沒有和windows一樣的c...

Django學習 第一部分

建立並啟用虛擬環境後,在shell提示符這下輸入命令 pip install django 可以去看官方教程非常詳細 在教程中會引導你完成基本的輪詢應用程式的建立 它有兩部分組成 python m django versoin如果安裝了django,我們可以看到安裝的版本,如果沒有將會受到類似 no...