gpt4 book ai didi

c - 二维数组错误: Subscripted value is neither array nor pointer nor vector

转载 作者:行者123 更新时间:2023-11-30 15:41:28 46 4
gpt4 key购买 nike

这就是我的问题:

我想在函数中对数组中的行进行求和。

这是(函数):

int* DodWierszy(int j, int *M, int *M1, int *WynikM)
{
for(i = 0; i < Kolumny; i++)
{
WynikM[j][i] = M[j][i] + M1[j][i];
}
return WynikM;
}

在 Main() 中:

for (i = 0; i < Kolumny; i++)
{
macierzC[i] = DodWierszy(i, macierzA[i], macierzB[i], macierzC[i]);
}

我的错误如下:

zmpi.c: In function ‘DodWierszy’:
zmpi.c:13:12: error: subscripted value is neither array nor pointer nor vector
zmpi.c:13:22: error: subscripted value is neither array nor pointer nor vector
zmpi.c:13:33: error: subscripted value is neither array nor pointer nor vector

我和C不太相似。请帮帮我;<.

最佳答案

您做错了很多事情,因此请使用我的下面的示例来进行学习。

这是你做错的地方:

  • 在跨国环境中使用您的母语(代码),这样您就可以限制可能为您提供帮助的人数,因此请使用英语
  • DodWierszy 不必返回任何内容 - 特别是作为参数传递给它的结果矩阵
  • DodWierszy 期望传递指向 int 的指针,但您没有提供它
  • 您不必将一行传递给DodWierszy - 您可以传递整个数组(即指向它的指针 - 不是副本)

最好将您的正式参数(对 DodWierszy)声明为 int 矩阵 [][num of cols]。

int matrixA[2/*rows*/][5/*cols*/] = { { 10, 20, 30, 40, 50},
{ 9, 8, 7, 6, 5} };

int matrixB[2/*rows*/][5/*cols*/] = { { 1, 2, 3, 4, 5},
{ 0, 7, 2, 2, 1} };

int matrixC[2/*rows*/][5/*cols*/] = {0};

void print_matrix(char label[], int p[][5], int rows, int cols)
{
printf("%s:\n", label);

for(int r = 0; r < rows; r++)
{
for(int c = 0; c < cols; c++)
{
printf("%03d ", p[r][c] );
}
printf("\n");
}

printf("\n");
}

void add_matrix_row(int row, int cols, int a[][5], int b[][5], int c[][5])
{
for(int col = 0; col < cols; col++)
{
c[row][col] = a[row][col] + b[row][col];
}
}

void main(void)
{
print_matrix("matrixA", matrixA, 2, 5);
print_matrix("matrixB", matrixB, 2, 5);
print_matrix("matrixC", matrixC, 2, 5);

for (int row = 0; row < 2; row++)
{
add_matrix_row(row, 5, matrixA, matrixB, matrixC);
}

print_matrix("matrixA", matrixA, 2, 5);
print_matrix("matrixB", matrixB, 2, 5);
print_matrix("matrixC", matrixC, 2, 5);
}

结果:

matrixA
010 020 030 040 050
009 008 007 006 005

matrixB:
001 002 003 004 005
000 007 002 002 001

matrixC:
000 000 000 000 000
000 000 000 000 000

matrixA:
010 020 030 040 050
009 008 007 006 005

matrixB:
001 002 003 004 005
000 007 002 002 001

matrixC:
011 022 033 044 055
009 015 009 008 006

您可以传递一行,而不是传递整个数组:

for (int row = 0; row < 2; row++)
{
add_matrix_row(matrixA[row], matrixB[row], matrixC[row]);
}

然后

void add_matrix_row(int a[5], int b[5], int c[5])
{
for(int col = 0; col < 5; col++)
{
c[col] = a[col] + b[col];
}
}

关于c - 二维数组错误: Subscripted value is neither array nor pointer nor vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20518605/

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