не следует путать в (статический/фиксированное распределение памяти) & (динамическое выделение памяти) понятий :)
Позвольте мне ясно, ваша концепция братан.
Относится к следующему вопросу,
C supports two type of array.
1. Статический массив - выделяется память в "COMPILE TIME".
2. Динамический массив - выделяется память при «RUN TIME».
Ques. Как определить, является ли массив статическим или динамическим?
Ans. Объявление массива Синтаксис: -
int array_Name[size]; //size defines the size of block of memory for an array;
Итак, подходит к точке ->
Точка 1. если размер задан во время компиляции массива, это «Статическое распределение памяти». Он также называется «выделение памяти фиксированного размера», поскольку размер никогда не изменяется. Это ОГРАНИЧЕНИЕ МАССЫ в 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.
пункт 2. Если во время компиляции задан размер массива, это динамическое распределение памяти. Это достигается функцией malloc(), определенной в stdlib.h.
Теперь его это уточнение кода: -
#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;
}
Таким образом, массив (размер 5) имеет значение 0 при обр [5].
и другие индексы массива по-прежнему отображают значения мусора.
Надеясь, вы будете удовлетворены этим решением своей проблемы :)
Является ли функция добавленной в прошлом веке «новой»? –
Это потому, что вы уже инициализировали его? потому что если вы делаете что-то вроде printf («% d», arr [4]); вы получите ошибку –