Динамические массивы

В предыдущих курсах про массивы мы рассматривали создание массива таким способом: 
 
const int N = 10;
int A[N]

 или 

int A[10];

такой способ создает статический массив. Одним из недостатков является то, что размер массива задается константой и не позволяет размер массива считать с клавиатуры.
 
Поэтому есть другой тип массива : динамический массив, размер которого можно задать с клавиатуры:
 
int N;
scanf("%d", &N);
int *mas = malloc (sizeof(int) * N);   //Си

или 

int* A = new int [N];       // Си++
 
а очистка массива соответственно:
 
 free(mas);

и
   
 delete []mas;
 
К сожалению, изменить размер массива можно только если он создан с помощью оператора malloc, тогда нужно использовать realloc. Если же для создания массива использовалось new, то для изменения размера надо создать второй массив нужно размера, в который перенести данные, а старый очистить.