二维数组与数组指针

来源:互联网 发布:it编程 编辑:程序博客网 时间:2024/06/05 08:33

C语言中只有一维数组,数组的元素可以是数组,即构成二维数组,以此类推,即多维数组。考虑下面的例子:

int calendar[12][31];

该语句声明了一个数组,该数组具有12个数组类型的元素,其中每个元素都是一个具有31个整型元素的数组。calendar是数组名字,sizeof(calendar)表示的是整个数组的内存大小,即12*31*4,calendar也表示数组的首地址,calendar的值与calendar[0]和&calendar[0]和&calendar[0][0]的值一样。calendar[0]表示12个元素的第一个,也是一个具有31个整型元素的数组,calendar[0]就是数组名,也是该数组的首地址,&calendar[0]即该数组的地址,数组的指针,与calendar意义相同,&calendar[0]+1和calendar+1表示的含义相同,即12个数组元素的地址;calendar[0]与&calendar[0][0]含义相同,表示整型元素的数组的首地址,calendar[0]+1和&calendar[0][0]+1表示的含义相同,即31个整数元素的下一个元素。下面用一个具体的例子来说明:

int (*monthp)[31];
int *dayp;
int calendar[12][31];


for (monthp = &calendar[0]; monthp < &calendar[12]; monthp++)
{
for (dayp = *monthp; dayp < *monthp + 31; dayp++)
{
*dayp = 0;
printf("%d ", *dayp);
}
putchar('\n');
}

上述代码将该二维的数组的所有元素都赋为0,并且打印出来。

int (*monthp)[31]表示指向数组的指针,即对数组名取地址,可以如下赋值:

monthp=calendar;

monthp=&calendar[0];


原创粉丝点击