Array-Längen in Array-Parametern

9

Ich lese C Programming: A Modern Approach von K.N.King, um die Programmiersprache C zu lernen, und das aktuelle Kapitel erzählt von Funktionen und Array-Parametern. Es wird erklärt, dass man Konstrukte wie diese verwenden kann, um die Länge von Array-Parametern auszudrücken:

1.

%Vor%

2.

%Vor%

Die Frage (n) lautet also:

a. Sind die Konstrukte in Beispiel 1 rein kosmetischer Natur oder haben sie Auswirkungen auf den Compiler?

b. Ist der static Modifikator in diesem Zusammenhang nur kosmetischer Natur? was genau bedeutet es und was tun?

c. Ist es auch möglich, einen Array-Parameter wie diesen zu deklarieren? und ist es so kosmetisch wie Beispiel 1?

%Vor%     
MinecraftShamrock 27.04.2015, 12:07
quelle

1 Antwort

2

Die innerste Dimension der Parameter von Funktionsfeldern wird immer in einen Zeiger geschrieben, daher haben die Werte, die Sie dort eingeben, leider keine große Bedeutung. Dies ändert sich bei mehrdimensionalen Arrays: Ausgehend von der zweiten Dimension werden diese dann vom Compiler verwendet, um Dinge wie A[i][j] zu berechnen.

Das static in diesem Kontext bedeutet, dass ein Aufrufer mindestens so viele Elemente bereitstellen muss. Die meisten Compiler ignorieren den Wert selbst. Einige neuere Compiler leiten daraus ab, dass ein Nullzeiger als Argument nicht erlaubt ist und warnen Sie, wenn möglich, entsprechend.

Beachte auch, dass der Prototyp * haben kann, also ist der Wert dort nicht wichtig. Bei mehrdimensionalen Arrays ist der konkrete Wert derjenige, der mit dem Ausdruck für die Definition berechnet wurde.

    
Jens Gustedt 27.04.2015, 12:21
quelle

Tags und Links