簡體   English   中英

將二維數組作為參數傳遞

[英]Passing 2D array as an argument

我正在運行我的代碼,但收到此錯誤,我不知道如何處理它。

我的代碼:

#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define LIMIT 5
int m;

void dfs(int i,int j,int k,int kk,int mat[][1000],bool vis[101][101],int n,int m) {
    if(i<0 || i>n-1 || j<0 || j>m-1)
        return;
    if(mat[i][j]!=kk)
        return;
    if(vis[i][j])
        return;
    mat[i][j] = k;
    dfs(i,j+1,k,kk,mat,vis,n,m);
    dfs(i,j-1,k,kk,mat,vis,n,m);
    dfs(i+1,j,k,kk,mat,vis,n,m);
    dfs(i+1,j+1,k,kk,mat,vis,n,m);
    dfs(i+1,j-1,k,kk,mat,vis,n,m);
    dfs(i-1,j,k,kk,mat,vis,n,m);
    dfs(i-1,j-1,k,kk,mat,vis,n,m);
    dfs(i-1,j+1,k,kk,mat,vis,n,m);
}

int main() {
    int t;
    cin>>t;
    while(t--) {
        int n,m;
        bool vis[101][101];
        cin>>n>>m;
        int mat[101][101];
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
                cin>>mat[i][j];
        int x,y,k;
        cin>>x>>y>>k;
        int kk = mat[x][y];

        dfs(x,y,k,mat,vis,n,m);
    }
    return 0;
}

錯誤:

cpp:41:13: error: invalid conversion from ‘int (*)[101]’ to ‘int’ [-fpermissive]
41 |   dfs(x,y,k,mat,vis,n,m);
   |             ^~~
   |             |
   |             int (*)[101]

提前致謝。

你在 function 調用中有一個錯字,它缺少一個參數,在第 5 個參數之前需要 4 個int參數,一個二維數組,我猜你忘了包括第 4 個參數kk 那是導致該編譯錯誤的原因。

修復該問題不會解決您的問題,因為您無法將具有(*)[101]維度的數組傳遞給接收具有(*)[1000]維度的參數的 function,它們必須匹配,這些被視為不兼容的類型.

要么將mat聲明為:

 int mat[1000][1000];

或者將 function 聲明更改為:

void dfs(int i, int j, int k, int kk, int mat[][101], bool vis[101][101], int n, int m)
                                                ^^^

您的 dfs function 中還有另一個 int 參數 (kk),但您在第 41 行忽略了它: dfs(x,y,k,mat,vis,n,m); , 你應該在 k 之后寫另一個 integer 值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM