Wie kann man das Ende von int * array erkennen?

7

Ich mache ein dynamisches Array mit int* Datentyp mit malloc() . Aber das Problem ist: Wie kann man das Ende des Arrays erkennen? es gibt keine Entsprechung zu int* für %code% -Datentyp, also, wie geht das? Pass-Größe als Out-Parameter der Funktion? Ich hoffe, dir ist das klar. Jede Hilfe wird sehr geschätzt.

    
Jack 19.04.2012, 00:43
quelle

5 Antworten

11

C verwaltet Array-Längen nicht, wie einige andere Sprachen.

Sie könnten eine Struktur dafür in Betracht ziehen:

%Vor%

verwendet:

%Vor%     
justin 19.04.2012, 00:47
quelle
8

Es gibt kein "offizielles" Äquivalent zu int für Ganzzahlen, aber Sie können sicherlich Ihren eigenen Wert verwenden. Wenn Ihre Ganzzahlen beispielsweise Entfernungen darstellen, können Sie -1 (keine gültige Entfernung) als Sentinel-Wert verwenden, um das Ende des Arrays anzugeben.

Wenn Ihr Integer-Array vernünftigerweise any %code% -Wert enthalten kann, können Sie die Größe des zugewiesenen Arrays mit einem zusätzlichen Parameter an Ihre Funktion übergeben.

    
Greg Hewgill 19.04.2012 00:45
quelle
0

Sie können NULL als Endwert verwenden. Sie können einer Struktur eine Ganzzahl mit dem Array hinzufügen, das die Anzahl der Einträge verfolgt. Oder Sie können die Größe separat verfolgen. Sie können es tun, wie Sie wollen.

    
David Schwartz 19.04.2012 00:47
quelle
0

C weiß nicht, wo das Ende Ihres dynamischen Arrays ist. Sie sollten sich die Größe merken, die Sie für das Array zuweisen.

    
Fei Xue 19.04.2012 02:35
quelle
0

Wenn Sie Speicher mit malloc zuweisen, wird die Anzahl der zugewiesenen Bytes unmittelbar vor dem Start des 'mallocated' Speichers gespeichert. Wenn Sie die Größe kennen, kennen Sie das Ende auch! Dies wird in der Bibel von C, dem K & R-Buch, erklärt. Ich wünschte, ich könnte Ihnen auch die Seitennummer geben, aber Sie werden es wissen, wenn Sie es sehen.

    
Sriharsha 19.04.2012 05:41
quelle

Tags und Links