指针与数组
数组中下标为N元素的地址 = 数组的首地址 + N * sizeof(数据类型)
【指针与多维数组】
array[1][2] 指的是一个元素
&array[1][2] 指的是array[1][2]元素的地址
array 指的是数组下标为0的那一行的首地址
array+1 指的是数组下标为1的那一行的首地址
&array[1] 指的也是数组下标为1的那一行的首地址
array[1] 等价于 array[1]+0, 指的也是array[1][0]元素的地址
array[1]+2 指的也是array[1][2]元素的地址
*(*(array+1)+2) 指的是元素array[1][2]的值
*(array[1]+2) 指的是元素array[1][2]的值
#include <stdio.h>
int main()
{
int array[2][3] = {1,2,3,4,5,6};
int i, j, *p;
p = &array[0][0];
printf("使用下标访问数组元素:\n");
for (i=0; i<2; i++)
{
for (j=0; j<3; j++)
{
printf("array[%d][%d] = %d\n", i, j, array[i][j]);
}
}
printf("使用数组名访问数组元素:\n");
for (i=0; i<2; i++)
{
for (j=0; j<3; j++)
{
printf("array[%d][%d] = %d\n", i, j, *(*(array+i)+j));
}
}
printf("使用指针访问数组元素:\n");
for (i=0; i<2; i++)
{
for (j=0; j<3; j++)
{
printf("array[%d][%d] = %d\n", i, j, *(p+3*i+j));
}
}
getchar();
return 0;
}