/*程序作者:管寧
站點(diǎn):www.cndev-lab.com
所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者*/
#include
main()
{
staticinta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; /* 定義一個(gè)3行4列的二維數(shù)組 */
int*p;
printf("%d %d\n",a,*a);
printf("%d %d\n",a[0],*(a+0));
printf("%d %d\n",&a[0],&a[0][0]);
printf("%d %d\n",a[0][0],*(*(a+0)+0));
for(p=a[0];p/* 把a(bǔ)[0]的地址賦予指針變量p,條件判斷p
{
if((p-a[0])%4==0) /* 利用整數(shù)指針變量p減去當(dāng)前地址判斷出是不是已經(jīng)顯示出了四個(gè)值,換行回車(chē) */
{
printf("\n");
}
printf("M",*p); /* 打印出元素的值 */
}
printf("\n");
}
/*
對(duì)于多維數(shù)組的理解比較困難,這也是由于和一維數(shù)組指針含義有沖突造成的,例如第5行中的a和*a打印出來(lái)的值,
就會(huì)讓人弄不明白我們知道數(shù)組傳遞的地址那么a表示這個(gè)數(shù)組的其實(shí)地址為什么*a卻不是實(shí)際值呢?原因是在多維
數(shù)組中a+0表示的是第0行的首地址,a+1表示是第一行的首地址,那么*a其實(shí)就是*(a+0),那么第一個(gè)元素其實(shí)是a[0][0]
而*(a+0)僅僅是把一個(gè)3行4列的二維數(shù)組拆為了三個(gè)一維數(shù)組,*(a+0)顯然表示的不是物理位置也就不可能得到第一個(gè)
元素的值了,它僅僅是一個(gè)內(nèi)存地址也就是第0行的啟始地址,再看8行中的*(*(a+0)+0),它表示的則是第0行第0列個(gè)元素
的值也就是a[0][0],再次強(qiáng)調(diào)*(a+0)表示的是數(shù)組第一行的首地址,也就是第二行的*(a+1),而元素值要得到顯然就是
*(*(a+0)+0)了如果是第0行第1個(gè)也就是*(*(a+0)+1),對(duì)于多維數(shù)指針的理解是個(gè)比較難需要反復(fù)觀察聯(lián)系的地方需要謹(jǐn)慎
如果多維數(shù)組的概念不清楚就需要從前面學(xué)起注意知識(shí)的積累!
*/
站點(diǎn):www.cndev-lab.com
所有稿件均有版權(quán),如要轉(zhuǎn)載,請(qǐng)務(wù)必出處和作者*/
#include
main()
{
staticinta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; /* 定義一個(gè)3行4列的二維數(shù)組 */
int*p;
printf("%d %d\n",a,*a);
printf("%d %d\n",a[0],*(a+0));
printf("%d %d\n",&a[0],&a[0][0]);
printf("%d %d\n",a[0][0],*(*(a+0)+0));
for(p=a[0];p/* 把a(bǔ)[0]的地址賦予指針變量p,條件判斷p
{
if((p-a[0])%4==0) /* 利用整數(shù)指針變量p減去當(dāng)前地址判斷出是不是已經(jīng)顯示出了四個(gè)值,換行回車(chē) */
{
printf("\n");
}
printf("M",*p); /* 打印出元素的值 */
}
printf("\n");
}
/*
對(duì)于多維數(shù)組的理解比較困難,這也是由于和一維數(shù)組指針含義有沖突造成的,例如第5行中的a和*a打印出來(lái)的值,
就會(huì)讓人弄不明白我們知道數(shù)組傳遞的地址那么a表示這個(gè)數(shù)組的其實(shí)地址為什么*a卻不是實(shí)際值呢?原因是在多維
數(shù)組中a+0表示的是第0行的首地址,a+1表示是第一行的首地址,那么*a其實(shí)就是*(a+0),那么第一個(gè)元素其實(shí)是a[0][0]
而*(a+0)僅僅是把一個(gè)3行4列的二維數(shù)組拆為了三個(gè)一維數(shù)組,*(a+0)顯然表示的不是物理位置也就不可能得到第一個(gè)
元素的值了,它僅僅是一個(gè)內(nèi)存地址也就是第0行的啟始地址,再看8行中的*(*(a+0)+0),它表示的則是第0行第0列個(gè)元素
的值也就是a[0][0],再次強(qiáng)調(diào)*(a+0)表示的是數(shù)組第一行的首地址,也就是第二行的*(a+1),而元素值要得到顯然就是
*(*(a+0)+0)了如果是第0行第1個(gè)也就是*(*(a+0)+1),對(duì)于多維數(shù)指針的理解是個(gè)比較難需要反復(fù)觀察聯(lián)系的地方需要謹(jǐn)慎
如果多維數(shù)組的概念不清楚就需要從前面學(xué)起注意知識(shí)的積累!
*/

