数组:
分为:1 数组,2 数组的数组;
数组的数组:
数组符号:[ ] 和数组是没有关系的。
*(p+i) =p[i];
p[i]可以写成i[p];
下面是我去年写的,这个笔记是梳理整合
所谓数组为2的有3个就是把内存好比为房间,int hoge[3][2]就是有3个大箱子其中每个大箱子都有2个小隔间,元素就呆在小隔间里。
所以hoge[i]是指数组(元素个数为2)的数组(元素个数为3)的第i个元素,其类型是数组(元素个数为2);
翻译一下这个i的类型就是小隔间。如上图二大爷家的:b
还有不得不说,如果小的时候养成集中注意力的话,也许我现在就不会在这个大学里了,到现在才知道怎么集中注意力真是不知道该怎么说了。
那么我们的
for(int i=0;i<3;i++)
{
for(int j=0;j<2;j++)
{
printf("%d",hoge[i][j]);
}
}
//这个意思就很清楚了,我们想要输出数组的数组里面全部的数。那么就要把内存里的数全部输出来。
那怎么才能把所有的东西都拿出来呢。
就好比你有三个大箱子,你怎么样把里面的东西都拿出来还不乱套,你只能一个一个的箱子去拿,这样才不会乱
所以,我们要从第一个箱子开始拿,
第一个箱子 第一个隔间 i=0 j=0
第一个箱子 第二个隔间 i=0 j=1
第二个箱子 第一个隔间 i=1 j=0
第二个箱子 第二个隔间 i=1 j=1
第三个箱子 第一个隔间 i=2 j=0
第三个箱子 第二个隔间 i=2 j=1
故第一个for是你拿的箱子,第二个for是你拿的隔间
第二个例子
int a[3][4]
int类型的数组(元素为4)的数组(元素为3)
int类型的数组4有3个
int a[3][4]三个箱子里有4个隔间
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
printf("%d",a[i][j]);
}
}
所以再来一个int hoge[4][3]
void func(int(*hoge)[3])
{
int i, j;
for (i = 0; i < 4; i++)
{
for(j=0;j<3;j++)
{
printf("%d,", hoge[i][j]);//i是数组元素个数为3的,j是数组元素个 数为4的
}
putchar('\n');
}
}
int main()
{ //int类型的数组(元素个数为3)的数组(元素个数为4)
int hoge[][3] = { {1,2,3},{4,5,6},{7,8,9},{10,11,12} };
//=int hoge[4][3]
//=int (*hoge)[3]
func(hoge);
system("pause");
}
如此数组便也是清晰明了了,对于for循环也是明白了