在 C 中访问二维数组的哪种方法最有效? (使用指针)
如果您有一个接受数组指针的函数,那么使用指向数组中每个元素的指针是否有用,还是多余的?例如:
int sum(int(*arr)[3]) {
int i,j, sum = 0;
for (i =0; i < ROW ; i ++) {
for (j =0; j < COL ; j ++) {
sum = sum + *(*( arr +i )+j);
}
}
}
在这种情况下使用 arr[i][j] 是否相同?
If you have a function that takes the pointer of an array, would there be any use in using pointers to each element in the array, or is it redundant? For example:
int sum(int(*arr)[3]) {
int i,j, sum = 0;
for (i =0; i < ROW ; i ++) {
for (j =0; j < COL ; j ++) {
sum = sum + *(*( arr +i )+j);
}
}
}
Would using arr[i][j] be the same in this case?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
标准要求
arr[i]
等于*(arr + i)
所以不,不使用arr[i] 是没有意义的
更具可读性。加速二维数组访问是一个复杂的主题。有一些提高性能的技术,但那些考虑硬件架构(例如缓存)的技术与访问模式有关,而不是与访问语法有关。
arr[i]
is required by the standard to be equivalent to*(arr + i)
so no, there is no point in not usingarr[i]
which is more readable.Speeding up 2d array access is a complex topic. There are some techniques for performance improvement, but those take hardware architecture (e.g. cache) into account are are related to access patterns rather than access syntax.