c - 如何使用指针表示法访问二维数组中的结构元素?

标签 c arrays pointers

英语不是我的第一语言,所以我不确定我是否以正确的方式提出问题。如果有人想纠正我,请随时这样做。现在,

我理解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/

相关文章:

c++ - 为什么 int 指针给我 float ?

c - 如果指针只是地址,为什么我不能将特定的 int 地址分配给指针?

c - 如何在 C 中没有任何库的情况下使用 printf()?

c - C 线程程序中的链接器错误..ld 返回 1 退出状态

arrays - 使 JSON 响应符合结构和数组 Swift

c++ - 二维数组动态分配C++

c - 如何在树莓派上运行没有操作系统的 C 程序?

c - 在 C 编程中对字符串进行标记

arrays - Golang - 如何将数组 ( [ ] ) "convert"转换为列表 ( ... )?

c - 返回错误顺序的字符串二叉树