C99 obsługuje VLA więc można zrobić:
int main()
{
int size;
scanf("%d", &size);
int arr[size];
}
Ewentualnie tak jak wyżej napisano, używając malloc:
int main()
{
int size;
scanf("%d", &size);
int *arr = (int*)malloc(sizeof(int) * size);
// Pamiętaj o zwolnieniu pamięci:
free(arr);
}
Do malloca podajesz rozmiar jaki chcesz (w bajtach). sizeof(int)
zwraca rozmiar w bajtach jednej zmiennej typu int
więc należy pomnożyć to z ilością jaką chcesz mieć. Następnie zwrócony zostanie wskaźnik na przydzielony obszar tablicy albo NULL
gdy przydzielenie pamięci się nie powiodło (z braku dostępnego miejsca).