gpt4 book ai didi

c - 为什么会出现这个变量错误的错误呢?

转载 作者:行者123 更新时间:2023-11-30 14:35:36 26 4
gpt4 key购买 nike

我无法编译我的程序,因为我不断收到错误:

mine.c:40:44: error: subscripted value is neither array nor pointer nor vector
diamTable[r][c] = diam[r][c] +

相关代码为:

int getMax(int *diam, int m, int n) {
...
for(int c=n-1; c>=0; c--) {
for (int r=0; r<m; r++) {
...
// Where the error occurs
diamTable[r][c] = diam[r][c] +
max(right, max(rightup, rightdown));
}
}

// Driver Code
int main(int argc, char* v[]) {
...
printf("%d\n", getMax(&diam[m][n], m, n));

return 0;
}

我希望有人知道为什么我会收到上述错误以及如何解决此问题。

最佳答案

参数diam函数的getMax声明如下:

int *diam

因此,您只能对变量应用一个下标运算符。例如

diam[r]

在这种情况下,表达式的类型是标量类型 int。因此,您不能对 int 类型的对象应用第二个下标运算符。

另一方面,在这次通话中

getMax(&diam[m][n], m, n)

您正在传递一个指向数组之外的内存的指针 diam也就是说,您正在传递元素 diam[n][m] 的地址数组中不存在。

使用diam作为二维数组,您需要声明如下函数

int getMax( int m, int n, int diam[m][n] ) 

并这样调用它

getMax( m, n, diam )

在本例中,函数内的参数 diam类型为 int ( * )[n]并且您可以对指针应用两个下标运算符。

关于c - 为什么会出现这个变量错误的错误呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58463095/

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