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?
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% 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:
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.