指標與一維 二維陣列

2021-07-25 11:05:53 字數 1573 閱讀 6749

++++++++++示例程式

++++++++++

#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

//第一種方式

printf("%s\n",p);

//第二種方式

for(i=0;m[i]!='\0';i++)

printf("%c",*p++); /* 這裡的*p++也可以寫成*(p+i) */ 【注意點2】

printf("\n");

}

重點知識概括與總結:由【注意點1】和【注意點2】對比我們可以發現乙個陣列方面的知識點。和在c語言中,陣列名是乙個位址常量

,不能對這進行賦值和自增自減運算,由陣列名代表它的首位址。所以在【注意點1】那塊我們不能將*(m+i)替換為

*m++。

一、指標與二維陣列

++++++++++示例程式

++++++++++

#includevoid main()

,,};

//用陣列名做指標輸出

//第一種方式

for(int i=0;i<3;i++)

printf("%s\n",m+i); /* 這裡的m[i],也可以寫成m+i */ 【注意點3】

//第二種方式

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

}

重點知識概括與總結:必須注意的是對二維及以上字元型陣列來說,每個最小行單位必須留出最後乙個空位置留給』\0』,對其它型別的字元型陣列和int型陣列則無此規則。

在二維陣列中無法通過定義乙個指標型變數*p來指向二維陣列首行首列位址對這個陣列進行輸出,如以下輸出做法則為錯。

char *p=&m[0][0];

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

printf("%s\n",p+i);

上邊的p+i無法與示例程式中的【注意點

3】等價,這裡的

p+i只能對陣列首行進行操作,如printf("%s\n",p+i);當i=0時,

會列印出二維陣列的首行所有元素。i=1時從首行第二個元素開始列印,到最後乙個元素停止列印。

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

for(int j=0;m[i][j]!='\0';j++)

printf("%s\n",*(*(p+i)+j));

printf("\n");

這裡的輸出方式則是完全錯誤的,當然將*(*(p+i)+j)換做*(p[i]+j)也不能成立

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

陣列與指標間的三條規則 陣列名是指向陣列首元素的指標。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 而利用二維陣列線性儲存的特性,可以將二維陣列當作一維指標方便的在函式之間傳遞 如 將乙個二維陣列賦值給乙個動態二維陣列,引數設定為一維指...

二維陣列與二維指標

一.指標與二維陣列 以martix 3 4 為例 1.二維陣列的本質 int martix 3 4 int martix 3 4 int 4 martix 3 令int 4 為type,type martix 3 為含有三個元素的陣列,每乙個元素型別為int 4 int 4 是乙個擁有4個int型別...