Facing this Error: tempCodeRunnerFile.c:3:38: note: expected 'int *' but argument is of type 'int' void printArray(int row,int col,int *marks){

Facing this Error: tempCodeRunnerFile.c:3:38: note: expected 'int *' but argument is of type 'int' void printArray(int row,int col,int *marks){

我正在尝试使用类似

的函数打印二维数组
{ {i,j}{i,j}        
  {i,j}{i,j}  
  {i,j}{i,j} }

通过在二维数组中获取主函数中的值... 请帮助我是编程初学者,正在学习我的第一门编程语言...

#include <stdio.h>
void printArray(int row,int col,int *marks){
    printf("{ ");
    int j;
     for(int i=0; i<row; i++){
         printf("{");
        for(int j=0; j<col; j++){
            printf("%d", *(marks));
            if(j==0){
            printf(", ");
            }
        }
        printf("}");
        if(i==2,j==1);
     }
     printf("}");
}
int main()
{
    int marks[3][2];
    int row = 3,col = 2;
    int i,j;
     for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            printf("Enter the value [%d][%d]: ",i,j);
            scanf("%d", &marks[i][j]);
        }
    }
    printArray(row, col, marks[i][j]);
    return 0;
}

问题是您正在调用传递给它的函数 int 类型的表达式,其中使用了未初始化的变量 ij 而不是传递数组本身.

int i,j;
//...
printArray(row, col, marks[i][j]);

像这样更改函数调用

printArray(row, col, marks);

函数声明和定义如下面的演示程序所示

#include <stdio.h>

void printArray( int row, int col, int marks[][col]){
    printf("{\n");
     for(int i=0; i<row; i++){
         printf("\t{");
        for(int j=0; j<col; j++){
            printf("%d", marks[i][j]);
            if(j != col - 1){
            printf(", ");
            }
        }
        printf("\t}\n");
     }
     printf("}\n");
}

int main(void) 
{
    enum { ROW = 3, COL = 2 };
    int marks[ROW][COL] =
    {
        { 1, 2 },
        { 3, 4 },
        { 5, 6 } 
    };
    
    printArray( ROW, COL, marks );
   
    return 0;
}

程序输出为

{
    {1, 2   }
    {3, 4   }
    {5, 6   }
}