数组地址
static short int data[5][6]数组起始地址100,元素data[3][2]静态区地址怎么算?100+2*i 吗?
元素data[3][2]静态区地址 == 起始地址100 + (3*6+2)*sizeof(short int)
尽量不要去搞物理地址!
[另例] double a[M][N], *pa = &a[0][0];
则:&a[i][j] == pa+i*N+j
关键是记住:
1。C数组是按行存储的。
2。C数组下标从零开始。
补充一个程序,以说明我的观点。
#include <stdio.h>
main()
{
double x,*px;
char *p;
px = &x;
printf("x at %p\n",px);
p = (char*)px;
printf("x at %p\n",p);
printf("x的右邻 at %p\n",px+1);
printf("x的右邻 at %p\n",p+1);
}
//VC编连后运行结果:
x at 0012FF78
x at 0012FF78
x的右邻 at 0012FF80
x的右邻 at 0012FF79