簡體   English   中英

為什么我將錯誤從char轉換為char?

[英]Why I get error convert from char to char?

這是我的代碼:

#include <iostream>
using namespace std;

bool funkcja (char * a[3][7], char * b[7]);

int main()
{

    char T[3][7]={{'A', 'L', 'A', 'M','A', 'k', 'o'},
            {'M', 'A','M','K','O','T','A'},
            {'T', 'E','Q','U','I','L','A'}};

    char tab[7]={ 'A', 'L', 'A', 'M','A', 'k', 'o' }; 

    cout<<funkcja(T, tab)<<endl;

    return 0;
}

bool funkcja (char * a[3][7], char * b[7])
{
    int licznik=0;

    for (int i=0;i<3;i++)
    {
        for (int j=0; j<7;j++)
        {
                if (a[i][j]==b[j])
                {
                    licznik++;
                    if (licznik==7) return true;
                }
                else {
                    licznik=0;
                }
        }
        licznik=0;
    }
    return false;
}

當我嘗試構建它時,我得到:

[Error] cannot convert 'char (*)[7]' to 'char* (*)[7]' for argument '1' to 'bool funkcja(char* (*)[7], char**)'

您的函數定義不正確。 您需要更改:

bool funkcja (char * a[3][7], char * b[7])

至:

bool funkcja (char a[3][7], char b[7])

請注意,您可以省略第一個數組維,因此可以將其減少為:

bool funkcja (char a[][7], char b[])

您的funkcja接受兩個指針數組,但您正在將其傳遞給chars數組。

您應該將簽名更改為:

bool funkcja (char a[][7], char b[]);

您在funkcja傳遞的參數和參數類型之間的類型不匹配。 其他答案對此進行了解釋。 此外,您還可以通過引用傳遞數組,最簡單的方法是使用模板。 這樣,您還可以在編譯時傳遞它們的大小。

[生活]

#include <iostream>
#include <string>
#include <vector>

#include <iostream>
using namespace std;

template<int N, int M>
bool funkcja (char (&a)[N][M], char (&b)[M]);

int main()
{

    char T[3][7]={{'A', 'L', 'A', 'M','A', 'k', 'o'},
            {'M', 'A','M','K','O','T','A'},
            {'T', 'E','Q','U','I','L','A'}};

    char tab[7]={ 'A', 'L', 'A', 'M','A', 'k', 'o' }; 

    cout<<funkcja(T, tab)<<endl;

    return 0;
}

template<int N, int M>
bool funkcja (char (&a)[N][M], char (&b)[M])
{
    int licznik=0;

    for (int i=0;i<N;i++)
    {
        for (int j=0; j<M;j++)
        {
                if (a[i][j]==b[j])
                {
                    licznik++;
                    if (licznik==M) return true;
                }
                else {
                    licznik=0;
                }
        }
        licznik=0;
    }
    return false;
}

暫無
暫無

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

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