In Ihrem Beispiel num2 wird typischerweise als ein gebrauchtes Zeiger auf ein dynamisch zugeordnetes Array. Jedoch ist weder num2 noch num1 ein guter Name in diesem Fall. Lassen Sie uns stattdessen unsere dynamische Array-Typ als ein Datensatz mit den Feldern Länge und Artikel erklären:
struct Array {
int length;
int *items;
};
typedef struct Array Array;
Wenn wir eine Variable haben ein vom Typ Array, bevor wir können die Werte ihrer Elemente zuweisen Wir müssen zuerst Speicher für das Array reservieren. In C erfolgt dies typischerweise mit der Funktion malloc. Diese Funktion ist jedoch ziemlich fehleranfällig zu verwenden, so ist es eine gute Idee ist, eine Makro-Funktion zu definieren, die Speicherzuweisung vereinfacht:
#define NEW_ARRAY(ptr, n) (ptr) = malloc((n) * sizeof (ptr)[0])
Nach NEW_ARRAY genannt haben, können wir Werte in das Array zuweisen:
int length;
Array a;
length = 20;
a.length = length;
NEW_ARRAY(a.items, length);
a.items[0] = 37;
a.items[1] = 19;
...
Wenn wir mit dem Array getan, was wir die Erinnerung durch die Elemente verwendet, freisetzen kann:
free(a.items);
sind Sie nicht sicher, wie mit einem 'int *' m zu bewältigen ember-Variable einer 'struct'- oder einer' int * '-Variablen an sich? –
Sie würden es auf die gleiche Weise zuweisen wie Sie einen anderen Wert zuweisen. Mit dem Zuweisungsoperator ('='). Vielleicht meinst du * was * du ihm zuordnen solltest. Natürlich können wir das nicht beantworten, da nur Sie selbst entscheiden können, was das Programm tun soll (genauso können wir Ihnen nicht sagen, dass "num1" "30" und nicht "20" sein sollte). Das einzige, was wir sagen können, ist, dass der Wert ein "int" -Zeiger sein muss. Häufige Quellen: 'malloc' Aufruf oder Adresse einer bestehenden' int' Variablen. – kaylum