当前位置: 代码迷 >> C语言 >> 数组地址
  详细解决方案

数组地址

热度:429   发布时间:2006-06-25 09:37:52.0
数组地址
static short int data[5][6]数组起始地址100,元素data[3][2]静态区地址怎么算?100+2*i 吗?
搜索更多相关的解决方案: 地址  

----------------解决方案--------------------------------------------------------
100+5*3*2+2*3
----------------解决方案--------------------------------------------------------
回复:(JENNET)数组地址
以下是引用JENNET在2006-6-25 9:37:52的发言:
static short int data[5][6]数组起始地址100,元素data[3][2]静态区地址怎么算?

元素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


----------------解决方案--------------------------------------------------------
  相关解决方案