Die Programmiersprache C bietet verschiedene Möglichkeiten, Arrays verschiedener Datentypen zu erstellen. Manchmal ist es jedoch notwendig, ein Array zu erstellen, ohne seine Größe explizit anzugeben. Dies kann nützlich sein, wenn die Größe des Arrays während der Programmausführung bestimmt wird oder wenn sich die Größe während der Programmausführung ändern kann.
Eine Möglichkeit, ein Array zu erstellen, ohne seine Größe in der Sprache C anzugeben, besteht darin, einen Zeiger auf ein Array zu verwenden. Ein Zeiger auf ein Array ist eine Variable, die die Adresse des ersten Elements des Arrays speichert. Auf diese Weise können Sie ein Array beliebiger Länge erstellen, indem Sie es zur Laufzeit des Programms angeben. Zum Beispiel:
int *arr;
printf("Array-Größe eingeben: ");
arr = (int*)malloc(size * sizeof(int));
In diesem Beispiel erstellen wir einen Zeiger auf ein arr-Array vom Typ int und verwenden dann die Funktion malloc, um dem Array Speicher zuzuweisen. Die Malloc-Funktion nimmt die Größe des Speichers in Bytes an und gibt einen Zeiger an den Anfang des zugewiesenen Speicherblocks zurück. Um dem Array Speicher zuzuweisen, multiplizieren wir die Größe mit der Größe des Datentyps int. Dann können wir die Variable arr als normales Array verwenden.
Erstellen eines Arrays ohne Größe mit
Um ein solches Array zu erstellen, müssen Sie zuerst einen Zeiger auf den gewünschten Datentyp deklarieren. Um beispielsweise ein Array ohne Größe vom Typ int zu erstellen, können Sie den folgenden Code verwenden:
int* array;
Sie können dann mit der Funktion malloc() Speicher für das Array zuweisen und die gewünschte Größe in Bytes angeben. Um beispielsweise 5 int-Elementen Speicher zuzuweisen, können Sie den folgenden Code verwenden:
array = (int*) malloc(5 * sizeof(int));
Wenn der Speicher erfolgreich zugewiesen wurde, gibt die Funktion malloc() einen Zeiger auf den Anfang des zugewiesenen Speicherbereichs zurück. Sie können diesen Zeiger jetzt verwenden, um mit einem Array ohne Größe zu arbeiten.
Sie können Indizes oder Zeiger verwenden, um auf die Elemente des Arrays zuzugreifen. Wenn Sie beispielsweise den Wert 10 in das erste Element eines Arrays schreiben möchten, können Sie den folgenden Code verwenden:
*array = 10;
Und Sie können den folgenden Code verwenden, um den Wert des ersten Arrayelements abzurufen:
int firstElement = *array;
Wenn Sie mit dem Array fertig sind, müssen Sie den zugewiesenen Speicher mit der Funktion free() freigeben. Um beispielsweise Speicher freizugeben, der einem Array ohne Größe zugewiesen ist, können Sie den folgenden Code verwenden:
free(array);
Es ist wichtig sich daran zu erinnern, dass der Zugriff auf das Array nach der Freigabe des Speichers ungültig wird. Wenn Sie eine dynamische Speicherzuweisung verwenden, müssen Sie außerdem sicherstellen, dass der Speicher erfolgreich zugewiesen wurde und dass er ordnungsgemäß freigegeben wurde.
Verwenden von Zeigern
Sie können die Speicherzuordnungsfunktion malloc() verwenden, um ein Array ohne Angabe seiner Größe zu erstellen. Diese Funktion nimmt die Anzahl der Bytes an, die zugewiesen werden sollen, und gibt einen Zeiger auf den zugewiesenen Speicher zurück.
Beispiel für die Verwendung der Funktion malloc() :
#include #include int main() printf("Введите элементы массива:");for (int i = 0; i < size; i++) printf("Массив:");for (int i = 0; i < size; i++) printf("");free(arr);return 0;>
In diesem Beispiel deklarieren wir zuerst einen Zeiger arr und eine Variable size , in die der Benutzer die Größe des Arrays eingibt. Dann verwenden wir die Funktion malloc() , um Speicher für ein Array mit einer Größe zuzuweisen, die mit der Größe des Arrayelements multipliziert wird (in diesem Fall sizeof(int) ).
Nach erfolgreicher Speicherzuweisung können wir das Array mithilfe von Zeigern auf seine Elemente verwenden. Nach der Verwendung des Arrays sollte es mit der Funktion free() freigegeben werden, um Speicherlecks zu vermeiden.
Die Verwendung von Zeigern ermöglicht eine flexible Arbeit mit Arrays, die auf eine vordefinierte Größe beschränkt ist. Es ist jedoch notwendig, aufmerksam zu sein und den Speicher richtig zu verwalten, um Fehler zu vermeiden.