Eroare de compilare – Tipuri invalide ‘char[int]’ pentru subscriptul unui array (Programare, C++, Matrice Multidimensională, Erori De Compilare)

mc-lunar a intrebat.

Lucrez la un program care face niște calcule matriciale. Din fericire nu logica codului este cea care îmi dă erori.

Folosesc următorul cod pentru a scoate o matrice care este stocată într-o matrice 2-d:

void ouputMatrix(char arr[], int matrixRows, int matrixColumns) {

for (int a=0; a<matrixRows; a++) {
    for (int i=0; i<matrixColumns; i++) {
        cout << arr[a][i] << " ";
    }
    cout << endl;   
}
cout << endl;
}

Cu toate acestea, când încerc să compilez acest cod, mi se spune:

„În funcția ‘void outputMatrix(char*, int, int)’:[Eroare] Tipuri nevalabile ‘char[int]’ pentru subscriptul matricei.

Tipul de eroare îmi sugerează că îmi scapă ceva evident în ceea ce privește sintaxa de matrice c++ sau ceva de genul acesta, dar nu reușesc să-mi dau seama. Ce fac greșit?

Comentarii

  • arr[a] este un char. Nu puteți face [i] pe un char. Cred că ați vrut să treceți o matrice 2-D în loc de char arr[] –  > Por M.M.
  • Ahh, probabil că asta este problema mea. Voi posta un răspuns la această problemă după ce îmi dau seama care este sintaxa corectă. –  > Por mc-lunar.
  • Ar fi de ajutor dacă ați posta unde definiți și inițializați matricea –  > Por M.M.
2 răspunsuri
Gaurav

Dacă ați încerca să treceți o matrice 1-D la o funcție ca aceasta, atunci este perfect ceea ce ați făcut, dar în cazul în care încercați să treceți o matrice 2-D, atunci trebuie să treceți matricea cu sintaxa sa valabilă, care nu este doar ca 1-D

adică. return_type function_name(dataType arrayName[100],int size)

în cazul în care puteți, de asemenea, să lăsați subscriptorii „[]” în alb NUMAI pentru matrice 1-D,

dar pentru matricea 2-D ar trebui să fie

return_type function_name(dataType arrayName[100][100],int rowSize,int colSize)

cu toate acestea, puteți lăsa subscriptele „[]” goale și aici, dar numai primul [] și al doilea trebuie să conțină o valoare.De fapt, nu contează ce valoare ați trecut în al doilea subscript, dar trebuie să existe o valoare, treceți doar o valoare pe care matricea dvs. 2-D să nu o depășească.

Iar sintaxa va continua în acest fel pentru alte dimensiuni ale matricei.Sper că vă va fi de folos.

mc-lunar

Problema a fost că încercam să trec un array multidimensional în funcție, dar am folosit aceeași sintaxă ca și pentru un array 1-d. Din moment ce array-ul are o dimensiune de 100 (ceea ce nu este ceva ce ai putea ști pe baza întrebării mele, îmi pare rău…), modul corect de a-l trece este:

void ouputMatrix(char arr[][100], int matrixRows, int matrixColumns);