nicht in (statisch/Festspeicherzuweisung) & (dynamische Speicherzuweisung) Konzepte :)
Lassen Sie mich Ihr Konzept bro klar verwechseln.
Relevant für folgende Frage,
C supports two type of array.
1. Static Array - werden auf Speicher in "Kompilierzeit" zugewiesen.
2. Dynamisches Array - Speicher bei "RUN TIME" zugewiesen.
Ques. Wie kann festgestellt werden, ob ein Array statisch oder dynamisch ist?
Ans. Array Deklaration Syntax: -
int array_Name[size]; //size defines the size of block of memory for an array;
Also, auf den Punkt kommen ->
Punkt 1. Wenn Größe zum Zeitpunkt der Kompilierung zu Array gegeben ist, es ist ein "Static Memory Allocation". Es wird auch "Speicherzuweisung mit fester Größe" genannt, da die Größe niemals geändert wird. Es ist die Grenze der ARRAY in C.
ex. int arr[10]; //10 is size of arr which is staticly defined int brr[] = {1000, 2, 37, 755, 3}; //size is equal to the no. of values initilizes with.
Punkt 2. Wenn die Größe zum Zeitpunkt der Kompilierung für Array angegeben wird, handelt es sich um eine dynamische Speicherzuweisung. Dies wird durch die in stdlib.h definierte Funktion malloc() erreicht.
Nun, seine ist die Klärung des Codes: -
#include <stdio.h>
int main(void) {
// your code goes here
int a = 2;
int b = 3;
int c;
c = a + b; //c is calculated at run time
int arr[c]; //Compilor awaiting for the value of c which is given at run time but,
arr[5] = 0; //here arr is allocated the size of 5 at static(compile) time which is never be change further whether it is compile time in next statements or run time.
printf("%d",arr[5]);
return 0;
}
So, array (Größe 5) hält Wert 0 bei arr [5].
und andere Array-Indizes zeigen immer noch Müllwerte.
In der Hoffnung, Sie werden mit dieser Lösung für Ihr Problem zufrieden sein :)
Ist eine Funktion hinzugefügt letzten Jahrhundert "neu"? –
Liegt es daran, dass Sie es bereits initialisiert haben? denn wenn du etwas wie printf machst ("% d", arr [4]); Sie erhalten einen Fehler –