一維陣列和二維陣列的差異(指標與陣列)

2021-08-14 19:54:00 字數 1121 閱讀 5666

陣列的分類:

常見的陣列有一維陣列及二維陣列,

a[100] ,a[100][100]。前者是一維陣列,表示有100個儲存位,類似於數軸的x軸。後者是二維陣列,表示有100x100個儲存位,類似於平面數軸xy。

陣列於指標的關係

陣列用來儲存多個數值或字元,貌似和指標並無聯絡,但陣列其實就是乙個預設的常量指標。

例如陣列int a[100],它就相當於int *const a;其中a的初值是a[0]的位址,a=&a[0];陣列名就是陣列的首位址。

對於陣列中依次輸出a[0],a[1]。。。a[i],就相當於指標&a[i]=a+i;就是首位址移動到i個元素位址。對於a[i]的值,我們同樣可以用指標a 來表示:a[i]=*(a+i);

例項演示

int a[5]=;

int *p=a;

int *constp1=a;

for(i=0;i<5;i++)

對於以上四種輸出,顯然他們的輸出都是52100,得證a[i]可以用*(a+i)表示,陣列名a是乙個指標,而且是乙個常量指標;

指標陣列與陣列指標

int *a[10];    //指標陣列,是陣列,存放有10個指標的陣列,可以用指標來表示這個指標陣列(指標的指標)

int (*a)[10];   //陣列指標,是指標,是指向每行10個元素的指標,例如((*a)[10]=),a就是這十個資料所在陣列的頭位址。

二維陣列與一維陣列指標用法的區別:

首先,定義乙個一維陣列和乙個二維陣列

int a1[10];

int a2[5][10];

int (*p)[10];//指向每行十個元素的指標

a1=int *p;//指向a1的頭位址a[0];

&a1=int (*p)[10]; //指向a1 這個陣列

a2= int(*p)[10]; //指向二維陣列a2的一行;

&a2=int (*p)[5][10]; //指向a2這個二維陣列

有 &a1和a2是等價的,都表示指向乙個有是個資料的陣列(或陣列的一行)

p=&a1;

p=a2;

**一維陣列和二維陣列的指標加減法同樣存在差異***

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

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

二維陣列 二維陣列和指標

include using namespace std int main 如上面這段程式所示,通過取位址符 指標 p 獲得了變數 a 的位址,那麼解引用符 就可以從 p 中得到變數 a 的值。也就是說,p a和 p a是等價的。p 是變數 a 的位址,從 p 中就可以取出 a 的值。反之,能從 p ...

指標與一維 二維陣列

示例程式 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 第一種方式...