C 中的地址和数组

问题描述 投票:0回答:1

以下之间有什么区别(或联系):
一维数组的情况:
使用指针 arr+i 和
的元素地址 元素地址=基地址+元素大小*元素个数

二维数组的情况:之间的区别:
使用指针寻址:(* (arr+i)+j) 和
元素地址 = 基址 + 元素大小 * ((行数*总列数)+列数)。

我什么时候应该使用其中之一,或者它们是否等效?

感谢您的帮助。

c
1个回答
0
投票

在这个网站上,讨论实际代码确实很有帮助:

int a[12];
int b[3][4];

上面的代码编译后,这两个数组没有什么重要的区别。唯一的区别是用于访问 C 代码中的元素的语法。对于二维数组,编译器和类型检查器更了解数据的结构,因此它可能会阻止您编写一些有错误的代码,或者在溢出较小数组之一时提供有用的警告。无论哪种方式都可以。

© www.soinside.com 2019 - 2024. All rights reserved.