如果我在函数以下代码:访问元素
int A[5][5];
int i; int j;
for(i=0;i<5;i++){
for(j=0;j<5;j++){
A[i][j]=i+j;
printf("%d\n", A[i][j]);
}
}
这仅仅打印出各指标的总和。我想知道的是,是否有可能以类似于动态数组的方式访问静态数组中的每个索引。因此,举例来说,如果我想访问A [2] [2],可我说:
*(A+(2*5+2)*sizeof(int))?
我想在静态分配矩阵进行一些矩阵运算,我觉得用来解引用动态矩阵的方法将最适合我的目的。有任何想法吗?谢谢。
该数组并非像您声明的那样是静态的。 – 2012-02-28 20:44:46
如果解除引用的指针是指向int的指针,则sizeof()的乘法是不必要的。指针指向的指针类型大小的指针算术步骤。 – dmckee 2012-02-28 20:48:35
@dmckee不仅没有必要,而且是错误的。首先,它不会做他期望的事情,其次,你可以越过数组的边界并进入未定义的行为。 – 2012-02-28 20:50:30