C語言程式設計第八章 指標

2021-08-15 12:50:13 字數 1730 閱讀 3120

8.1 指標變數

8.1.1 變數的指標和指標變數

1.記憶體位址

取位址運算子&

例如,&a表示a的位址,&b表示變數b的位址

取內容運算子*

關於指標運算子的說明

已知定義語句

int a, *pa = &a, *pb;

c語言規定陣列名代表陣列的首位址,即第0個元素的位址,是乙個指標常量。人們將陣列的首位址即陣列第0元素的位址稱為陣列的指標,陣列元素的位址稱為陣列元素的指標。

8.2.1陣列指標變數的定義和引用

1. 陣列指標變數的定義

一般形式:型別識別符號 *指標變數名

int a[6], *pa;

pa = a; // 陣列名a是陣列的首位址

pa = &a[0]; // &a[0]為陣列第0個元素的位址

2. 陣列指標變數的引用

陣列指標變數與整數的加減算術運算

對於指向陣列的指標變數,可以加上或減去乙個整數n,含義是把指標指向的當前位置(指向某陣列元素)向前或向後移動n個位置。指標變數加1,表示指標變數指向下乙個陣列元素的位址,而不是在原位址基礎上加1。

兩陣列指標變數的減運算

如果兩個指標指向同乙個陣列,那麼它們可以想見,其結果再減1為兩個指標之間陣列元素的個數。

陣列指標變數的關係運算

如果兩個指標指向同乙個陣列,那麼它們的關係運算表示它們所指向陣列元素位置之間的關係。

3. 陣列元素的引用

訪問一維陣列元素有兩種方法

下標法,即用a[i]或pa[i]的形式訪問陣列元素;

指標法,即採用*(pa+i)或*(a+i)的形式訪問陣列元素。

如果要輸出某個指定的陣列元素a[i][j],則應該事先計算出該元素在記憶體中儲存的位置(即相對於陣列起始位置的相對位移量)。

計算a[i][j]在陣列中的相對位置的計算公式為:i*m+j

m為二維陣列的列數(二維陣列大小為n*m)

8.2.2二維陣列的指標

1.二維陣列的指標

aa[i] == *(aa+i)

*(aa[i]) == aa[i][0]

aa[i]+j == *(aa+i)+j

2.指向二維陣列的指標變數

行指標的定義形式如下:

型別識別符號 (*指標變數名)[長度];

訪問二維陣列元素的兩種方法

(1)下標法,即用a[i][j]或pa[i][j]的形式訪問陣列元素。

(2)指標法,即採用*(*(pa+i)+j)或*(*(aa+i))或*(pa[i]+j)或*(aa[i]+j)的形式訪問陣列元素。

8.2.3指標與字串

1.字串的表示形式

用一維字元陣列表示字串

用字元型指標變數表示字串

2.字元指標變數與字元陣列小結

儲存內容不同

字元陣列儲存的是字串本身,每個陣列元素存放乙個字元,而字元指標變數存放的是字串的首位址。

賦值方式不同

對字元陣列只能對各個元素賦值。

字元指標變數值是可以改變的,而字元陣列名代表字元陣列的起始位置,是乙個常量,不能改變。

8.3指標陣列和二級指標變數

8.3.1指標陣列

指標陣列的定義形式為:

型別識別符號 *陣列名[常量表示式];

8.3.2二級指標變數

定義二級指標變數的一般形式為:型別識別符號 **指標變數名;

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

第八章 指標

指標 1,指標 指標,英文名是pointer,也叫位址,他是常量。他就是乙個記憶體空間的首位置。2,指標變數,位址變數 顧名思義,指標變數就是存放指標 位址 的變數。如果定義呢?short int p null 定義了乙個指標變數p,並且付給初始值為零。short int 就是型別。表示的是存放sh...

第八章 指標

1 8.3.1 指標基礎及指標運算 2 8.3.2 資料交換 3 8.3.3 字串反轉及字串連線 4 8.3.4 陣列元素奇偶排列 1 掌握指標的概念和定義方法。2 掌握指標的操作符和指標的運算。3 掌握指標與陣列的關係。4 掌握指標與字串的關係。5 熟悉指標作為函式的引數以及返回指標的函式。6 了...