声明指向数组的指针时是否需要括号?

发布于 2024-12-17 09:27:30 字数 432 浏览 1 评论 0原文

我只是在看这个问题:

如何将多维数组分配给临时变量?

解决方案最终使用以下行:

int a[3][2] = {{1, 2}, {11, 12}, {21, 22}};
...
int (*b)[2] = a;

“将静态分配的多维数组分配给临时变量”。

我对该行的语法有点困惑:

int (*b)[2] = a;

在这种情况下,是否需要括号才能获得正确的效果,如果需要,为什么?有没有办法在不使用它们的情况下获得相同的结果?

I was just looking at this question:

How to assign a multi-dimensional array to a temporary variable?

The solution ended up using the lines:

int a[3][2] = {{1, 2}, {11, 12}, {21, 22}};
...
int (*b)[2] = a;

to "assign a statically allocated, multi-dimensional array to a temporary variable."

I'm a little confused about the syntax of the line:

int (*b)[2] = a;

In this instance, are the parentheses required to get the right effect, and if so, why? Is there a way to get the same result without using them?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

呢古 2024-12-24 09:27:30

这:

int (*b)[2]

b 声明为指向两个 int 数组的指针。这与: 不同,

int *b[2]

它将 b 声明为两个指向 int 的指针的数组。

您需要第一种形式才能正确执行指针算术。

This:

int (*b)[2]

declares b as a pointer to an array of two ints. This is not the same as:

int *b[2]

which declares b as an array of two pointers-to-int.

You need the first form in order to correctly perform pointer arithmetic.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文