C 語言學習記錄 16 指標與陣列間的聯絡

2021-10-24 22:05:16 字數 1773 閱讀 9182

一般來講,指標的算術運算是和陣列的使用相聯絡的,只有在使用陣列時,才會得到連續分布的可操作記憶體空間。下面介紹指標運算的基本原理。

指標是一種資料型別,與其他資料型別一樣,指標變數也可以參與部分運算,包括算術運算、關係運算和賦值運算。

指標可以和整數進行加減運算,但是它所代表的含義比較特殊。比如說指標p,當加上乙個整數n時,p+n指的是p當前所指的位置後方第n個位址。同理,p-n指前方第n個位址。p++指當前位置下乙個資料的位址,p–指的是前乙個資料的位址。

*(p1+n1)表示p1當前所指的數後n1個數的內容,也作p1[n1]。

指標變數的關係運算指的是指向相同資料型別的指標之間進行的關係運算,如果兩個相同型別的指標相等,那就意味著他們指向的是同乙個位址。不同型別的指標之間或指標與非零整數之間的關係運算是毫無意義的。

但是,指標變數可以與0比較,0專用與表示空指標。因此製作乙個空指標也可以用如下語句:

int* p;

p = 0;

指標加減運算的特點使得指標適合於儲存在一段連續記憶體空間中的同類資料。陣列正好是這樣的資料集合。下面使用指標變數輸出以下陣列的值。

#include

using

namespace std;

intmain()

;for

(int

* p=a; p<

(a +10)

; p++

) cout<<

*p<<

" "

; cout

}

執行這段程式後,就會將每乙個元素的值顯示。

*p並不是代表指標,而是代表指標所指向的值。指標通過陣列名這個位址常量和簡單的算術運算就可以訪問陣列元素,如陣列中下標為i的元素就是陣列名+i

*array即為array[0], *(array+3)即為array[3]
因此,可以利用指標的算術運算得出每個元素位址所指向的值。,並利用for迴圈將他們顯示出來。

當然,陣列名即為陣列的首位址,所以用以下的方法可以輸出陣列的第乙個元素。

int *p = arr;

cout<<*p《如果乙個陣列的每乙個元素都是指標變數,這個陣列就是指標陣列。指標陣列的每乙個元素都必須是同一型別的指標。

宣告一維指標陣列需要用以下語法:

int* pa[3]

;

這樣就產生了乙個其中有三個元素的指標陣列,每個元素都是乙個指向int型別資料的指標。由於指標陣列的每乙個元素都是指標,所以必須先賦值後引用。下面一段程式是利用指標陣列輸出單位矩陣。

#include

using

namespace std;

intmain()

;//定義矩陣第一行的陣列

int line2=

;//定義第二行

int line3=

;int

* pline[3]

=;//定義int陣列並初始化

cout<<

"matrix test: "

int i =

0; i <

3; i++

)return0;

}

指標陣列中的每乙個元素都指向矩陣中的一行,每一行都用乙個陣列進行存放,然後通過指標陣列的元素訪問存放資料的int型陣列。pline[i][j]與*(pline[i]+j)等價,指訪問指向第i個指標後的第j個資料。

C語言學習(三) 指標

指標的定義int p char p float p指標變數所佔記憶體的大小 跟前面定義的型別無關 而跟系統有關 16bits作業系統 2b 32bits作業系統 4b 64bits作業系統 8b 指標指向乙個值所在的第乙個位元組 通常乙個位址存放乙個位元組 const修飾指標 指標指向乙個字串時 如...

C語言學習4 指標

int a 10 int p a 一級指標 int s p 二級指標 int p 10 指向陣列的指標 int s 10 指標指向放指標的陣列 這個陣列有十個空間 int p 10 開闢10個空間 每個空間放指標 例如 int br 10 int s 10 br int ar 10 int p 10...

C語言學習6指標

1.指標與指標變數 2.直接訪問和間接訪問 3.指標的定義格式 方法一 int a int p a 方法二 int p,a p a 1.概念2.一般形式定義 int b 3 指標陣列,表示有三個元素,每個元素都是int int p 3 陣列指標,也可為行指標,它指向包含3個元素的一維陣列 1.定義乙...