16 指標與一維陣列

2021-07-27 09:25:10 字數 1674 閱讀 6511

指標在很多時候是與陣列緊密相關的,因為陣列元素的位址通常是連續的,這為指標的操作提供了方便。

1、陣列元素的位址關係

一維陣列的名字實際上就是指向這個陣列的第乙個元素的指標,也就是這個陣列的起始位址。例如

int a[3]=;

int p1=a;

int p2=&a[0];

a 既是陣列的名字,也是整個陣列 a 的起始位址,也就是第乙個陣列元素 a[0] 的存放位址。p1==p2

例:使用下標獲取陣列元素以及通過位址獲取陣列元素的區別與聯絡

// 使用下標獲取陣列元素以及通過位址獲取陣列元素的區別與聯絡

#include;

using

namespace

std;

void main()

cout

cout

說明:- words+i 是第 i+1 個元素存放的位址

- *(words+i) 表示的是第 i+1 個元素的位址所存放的資料值

- * words +i 是對位址 words 進行 * 運算,即取出 words[0] 的值,再加上 i

結果:

2、字元指標

char *pschar;

pschar="information string";

執行以上兩行**時,首先定義乙個字元型指標變數,然後找出記憶體中存放常量字串「information string」 的起始位址,並把這個位址賦值給指標變數 pschar。這個賦值是允許的,因為字串常量「information string」本身是有自身的儲存空間的,系統為它分配了19個字元的儲存空間,並且系統在賦值時,已經將字串常量轉換成起始位址形式。

下面這種賦值是不被允許的:

char *pschar;

pschar='a';

例:將乙個字串常量 information 複製到字元陣列中,並輸出這個字元陣列

// 將乙個字串常量 information 複製到字元陣列中,並輸出這個字元陣列

#include;

#include;

using

namespace

std;

void main()

cout

結果:

結果分析:

在上面程式中,將information 複製的字元陣列 chars 中時,沒有加結束字元『\0』,所以後面出現亂碼且長度不是定義的字元陣列的長度。

修改後的程式**為:

#include;

#include;

using

namespace

std;

void main()

cout

結果:

C 034 指標與一維陣列

陣列像乙個指標 訪問陣列中元素,使用陣列與使用指向這個陣列的指標是等價 num 1 p 1 num 1 p 1 num 1 的本質 num 1 指標 整數 指標中的值 sizeof 所指向的資料型別 整數 陣列不是乙個指標 1 sizeof array sizeof pointer 當乙個陣列賦值乙...

指標與陣列(一) 指標認知

一 定義與初始化 1.如何理解指標?1 指標是變數。2 指標是乙個位址,指向的是個型別。3 指標指向的是位址,位址指向的是內容。4 指標的指標,是面對於指標的變數。5 指標型別的位元組長度由作業系統決定 32位作業系統為4位元組,64位作業系統為8位元組 2.定義指標的幾種規範 int p 重在表示...

指標系列六(指標與二維陣列)

指標與二維陣列 int array 4 5 printf sizeof int d n sizeof int printf array p n array printf array 1 p n array 1 上面程式證明 array 1,位址加了20,每乙個整形四個位元組,相當於跨越了五個位元組 ...