首页 > 解决方案 > 如何打印二维数组?

问题描述

我有两个功能。一个创建给定数字的乘法表,另一个函数将数组打印出来。下面是我的代码:

这是错误(第 18 行):

expression must be a pointer to a complete object type

如何修复此错误并打印数组?另外,我不知道如何在每一行之后打印一个新行。

#include "multiplication.h"
#include <stdio.h> 
int arr[][];
void mulitpication(int num){
    /* initialize array and build*/
    int arr[num][num];
    for(int i=0; i<num;i++){
        for(int j=0;j<num;j++){
            arr[i][j]= (i+1)*(j+1);
        }
    }
}
    
void print(int arr[][]){
    /* print the arr*/
    int i;
    for(i=0;i<sizeof(arr);i++){
        for(int j=0;j<sizeof(arr);j++){
            printf("%d ",arr[i][j])**(line 18)**;
        }
            
    }
}

标签: arraysc

解决方案


如果使用支持 VLA 的 C99 或更高版本,请将所需尺寸传递给打印功能。

// void print(int arr[][]){
void print(size_t rows, size_t cols, int arr[row][col]){
    size_t r,c;
    for (size_t r = 0; r < rows; r++) {
      for (size_t c = 0; c < cols; c++) {
        printf("%d ",arr[r][c]);
      }
      printf("\n");
    }
}

推荐阅读