指標與陣列的關係(一維 二維)

2021-09-30 17:01:07 字數 1279 閱讀 5454

前提條件:

int a[10];//元素個數隨意自己定

int *p = a;//定義指標時直接初始化,也可以分為兩步:int *p; p=a;

&a[i]    等價於    a+i    等價於    &p[i]    等價於    p+i
第i+1個元素的值:
a[i]    等價於    *(a+i)    等價於    p[i]    等價於    *(p+i)
前提條件:(對於二維陣列)

int a[2][3];//2行3列

a表示二維陣列的首位址,第0行的位址

a+i代表第i行的位址,但並非增加i個位元組

a[i] 或 *(a+i) 代表第i行第0列的位址

a[i]+j 或 *(a+i)+j 或 &a[i][j] 代表第i行第j列的位址

行指標指向的內容:

*(*(a+i)+j) 或 a[i][j] 代表第i行第j列的內容

列指標指向的內容:

*(a+i*n+j) 或 a[i*n+j] 或 a[i][j] 代表第i行第j列的內容

二維陣列的行指標:(逐行查詢,逐列查詢)

#include

using

namespace std;

intmain()

,};int

(*p)[3

];//(*p)[i]:是定義乙個指向含有i個元素的陣列的指標,不過要注意,這裡「i」應該是乙個常量

//*p[i]:定義元素型別是指標的陣列,同樣的「i」應該是整型

p=a;

//用行位址初始化

for(

int i=

0;i<2;

++i)

return0;

}

二維陣列的列指標:(逐個查詢,相對偏移量)

#include

using

namespace std;

intmain()

,};int

*p; p=

*a;for

(int i=

0;i<2;

++i)

cout

for(

int i=

0;i<2;

++i)

return0;

}

指標與一維 二維陣列

示例程式 includevoid main int i,j 用陣列名做指標輸出資料 第一種方式 printf s n m 第二種方式 for i 0 m i 0 i printf c m i 注意點1 printf n 通過定義指標型變數輸出 char p m 將陣列首位址賦給指標變數p 第一種方式...

一維陣列,二維陣列與指標

陣列與指標間的三條規則 陣列名是指向陣列首元素的指標。e相當於給e公升了一階。int a 4 a 0 本身是乙個值,a 0 是乙個位址,公升階大概就是這個意思 e相當於給e降了一階。降階相當於把乙個指標降為值,a 0 是乙個位址,a 0 就成為了值 以上內容來自北京大學 c程式設計高階 一維陣列與指...

二維陣列與二維指標

1.二維陣列的儲存是線性的,可以通過一維指標的方式訪問。如一下 int map 5 5 int mapd map 0 0 則 map i j mapd i 5 j 而利用二維陣列線性儲存的特性,可以將二維陣列當作一維指標方便的在函式之間傳遞 如 將乙個二維陣列賦值給乙個動態二維陣列,引數設定為一維指...