英语不是我的第一语言,所以我不确定我是否以正确的方式提出问题。如果有人想纠正我,请随时这样做。现在,
我理解arr[i][j]
与 *(arr+i+j)
相同
但是,现在我有了这个
struct whatever{
int n;
int k;};
int main()
{
struct whatever arr[4][4];
}
我需要知道如何通过指针表示法访问结构内部的“n”。我试过 (*(arr+i+j).n)
(它只是给出一个错误“:请求成员 'n' 不是结构或 union )
还有很多其他变体,过去 2 小时我在论坛上找不到任何相关内容。
最佳答案
*(arr + i + j)
与 arr[i + j]
相同。
(*(a + b)
是 a[b]
– 以上也等同于 (arr + j)[i]
、i[j + arr]
和 (i + j)[arr]
。但不要去那里。)
arr[i][j]
是 *(*(arr + i) + j)
。
(或者 *(j + *(i + arr))
。不要这样做。)
如果您不参加混淆竞赛,明智的做法是尽可能避免使用指针算法。
指针算法使得编写看起来正确、完全错误的代码变得非常容易,并且仍然可以编译,然后在您本可以做一些有用的事情时必须进行调试。
关于c - 如何使用指针表示法访问二维数组中的结构元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48332259/