C語言多維陣列本質技術推演

it_xiangqiang發表於2020-10-31

多維陣列本質技術推演
int a[10];
char myarray[3][5] PK int (*p)[5]
myarray名稱到底是什麼?
多維陣列char a[i][j] ==> ((a+i)+j)轉換技巧分析

void main222()
{
int a[3][5];
int c[5]; //&c + 1;
int b[10]; //b代表陣列首元素的地址 &b代表這個陣列的地址 &b+1相當於 指標後移410個單位
//a代表什麼什麼那?a是一個陣列指標 指向低維陣列的指標
//a +1;
printf(“a:%d, a+1:%d \n”, a, a+1); //4
5
{
int i=0, j = 0, tmp = 0;
for (i=0; i<3; i++)
{
for (j=0; j<5; j++)
{
a[i][j] = ++tmp;
}
}
printf("\n");
for (i=0; i<3; i++)
{
for (j=0; j<5; j++)
{
printf("%d \n", a[i][j]);
}
}
}
//a的本質是一個陣列指標,每次往後跳一維的維數
{
int i = 0, j = 0;
//定義了一個陣列指標 變數
int (myArrayPoint)[5] ; //告訴編譯給我開闢四個位元組記憶體
myArrayPoint = a;
printf("\n");
for (i=0; i<3; i++)
{
for (j=0; j<5; j++)
{
//myArrayPoint[i][j] = ++tmp;
printf("%d \n", myArrayPoint[i][j]);
}
}
}
/

char cbuf[30]; // cbuf(1級指標) 代表陣列首元素的地址。。。&cbuf(二級指標) 代表整個陣列的地址
char array[10][30]; //array是二級指標
(array+i) //相當於 整個第i行的陣列地址 //二級指標 &cbuf
(array+i))//一維陣列的首地址 cbuf
(array+i))+j //相當於第i行第j列的地址了把。。。。&array[i][j]
(((array+i))+j) //相當於第i行第j列的地址了把。。。。<====>array[i][j]
/
system(“pause”);
}
在這裡插入圖片描述
結論:a是一個指向int myarray[5]的陣列指標 a+1 向後跳5
4,跳一行。

相關文章