Wie man ein 2d-Array durch den Zeiger in c [duplizieren]

8

Ich versuche, mein zweidimensionales Array durch Zeiger an eine Funktion zu übergeben und die Werte zu ändern.

%Vor%

Aber das Programm stürzt damit ab. Was habe ich falsch gemacht?

    
Sayed Hussain Mehdi 23.12.2012, 15:08
quelle

2 Antworten

3

Es stürzt ab, weil ein Array kein Zeiger auf den Zeiger ist, es wird versuchen, Array-Werte zu lesen, als wären sie Zeiger, aber ein Array enthält nur die Daten ohne Zeiger Ein Array ist alle im Speicher benachbart, akzeptieren Sie einfach einen einzelnen Zeiger und führen Sie eine Umwandlung aus, wenn Sie die Funktion aufrufen:

%Vor%

...

%Vor%     
Ramy Al Zuhouri 23.12.2012, 15:14
quelle
9

Ihr Array hat den Typ int[2][2] ("Array von 2 Arrays von 2 int") und sein Name wird zu einem Zeiger auf sein erstes Element, das vom Typ int(*)[2] ("Zeiger auf Array von 2 int "). Also muss Ihr func ein Argument dieses Typs annehmen:

%Vor%

Alternativ können Sie einen Verweis auf den Array-Typ ("Referenz auf Array von 2 Array von 2 int"):

nehmen %Vor%

Stellen Sie sicher, dass Sie sowohl die Deklaration als auch die Definition ändern.

    
Joseph Mansfield 23.12.2012 15:12
quelle

Tags und Links