【发布时间】:2013-03-03 21:44:00
【问题描述】:
我有一个数组 ex:
int array[3][5];
如果我想为该数组中的元素赋值,这很简单……例如:
array[1][2] = 8;
但是,我想用指针数学来表示它,这是否正确?
**(array + 5 * 1 + 2) = 8;
在这两种情况下,它都在寻找第 7 个位置...我只是不确定是否需要在(代码)之外包含第 2 个 *
**(code)
编辑:只是有点跟进。感谢所有帮助我的人。我的困惑来自教师笔记中的错误,在我展示了您提供的信息后,他意识到了错误并同意
*(*(array+row)+col)
或
*(*array+MAX_COL*row+col)
是二维数组的精确指针数学表示。
**(array+MAX_COL*row+col)类似于array[MAX_COL*row+col],用于多维数组的一维数组实现,就像这篇帖子的回复之一中提到的James Kanze(第二个是比第一个更快)。
【问题讨论】:
-
那个问题是给 C 的……我不确定我的情况是否一样。
-
您所做的与 C 中的相同。继续使用@Antonijn 引用的问题。
-
好吧,我的代码看起来与其他人使用的有点不同...我的版本使用 **(array + MAX_COL * row + col) 是否正确?
-
*(*(a+1)+2) = 8;您所做的将指向未定义且错误的 a[7][0] 位置。一般*(*(数组+行)+列)。