gpt4 book ai didi

c++ - 函数参数和定义中的 "int b[][MAXN]"有什么区别(C++)

转载 作者:太空宇宙 更新时间:2023-11-04 11:55:02 24 4
gpt4 key购买 nike

我有一个数组int b[MAXN][MAXN];

当我使用 int a[][MAXN] = b; 时(我知道 int (*a)[MAXN] 可以)它给我一个错误。

但是如果我有一个函数 void f(int a[][MAXN])当我调用 f(b);有用!

谁能告诉我为什么?

最佳答案

在声明函数参数时,T[] 被视为与T* 相同,即将参数声明为指针。所以 void f(int a[][MAXN]) 只是将参数 a 声明为指向大小为 int 数组的指针MAXN.

但对于其他类型的变量,则不尽相同。也就是说,当您编写 int a[][MAXN] = b 时,这会将 a 声明为一个或多个数组,而不是指向数组的指针。这就是为什么它不起作用(因为你不能像那样让数组“指向”其他数组)。

请注意,这并非特定于数组的数组。如果将 void f(int a[])int a[] = b 进行比较,结果是一样的。在前一种情况下,参数 a 只是一个 int 指针(就像您编写了 int *a 一样),在后一种情况下a 将是一个数组,您会因为与上述相同的原因而收到错误。

关于c++ - 函数参数和定义中的 "int b[][MAXN]"有什么区别(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16523310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com