Изучаем С++ создавая игры в ue4 Уилльям Шериф Изучайте программирование С++ с интересным применением реально мира, что позволит вам создавать ваши собственные игры!


С++ стиль массивов динамического размера



Pdf көрінісі
бет148/252
Дата06.01.2022
өлшемі12,25 Mb.
#11940
1   ...   144   145   146   147   148   149   150   151   ...   252
С++ стиль массивов динамического размера 
(new[] и delete[])  
Возможно,  случалось  и  с  вами  такое,  что  мы  не  можем  всегда  знать  размер 
массива,  когда  начинаем  писать  программу.  Нам  нужно  распределять  размер 
массива динамически. 
Тем не менее, если вы попробовали сделать это, вы заметили, что это не работает
Давайте  попробуем  и  применим  команду  cin,  чтобы  принять  размер  массива  от 
пользователя.  Давайте  спросим  пользователя,  насколько  большой  ему  нужен 
массив и попробуем создать массив такого размера для него: 


137 | 
С т р а н и ц а
 
 
#include  
using namespace std; 
int main() 

cout << "
Насколько большой?" << endl; 
int size; // 
пробуем применить переменную для размера... 
cin >> size; // 
получаем размер от пользователя 
int array[ size ]; // 
получаем ошибку: "unknown size" (неизвестный размер) 

Мы получаем следующую ошибку: 
error C2133: 'array' : unknown size (
неизвестный размер)
 
Проблема  в  том,  что  компилятор  хочет  распределить  размер  массива.  И  пока 
размер переменной не будет обозначен как  const, компилятор не будет уверен в 
его  значении  во  время  компиляции.  Компилятор  С++  не  может  задавать  размер 
массиву во время компиляции, так что он выдаёт ошибку.  
Чтобы исправить это, нам нужно распределять массив динамически (на “куче”): 
#include  
using namespace std; 
int main() 

cout << "
Насколько большой?" << endl; 
int size; // 
пробуем применить переменную для размера... 
cin >> size; 
int *array = new int[ size ]; // 
это работает 
// 
заполняем массив и выводим 
for( int index = 0; index < size; index++ ) 

array[ index ] = index * 2; 
cout << array[ index ] << endl; 
}  
delete[] array; // 
должны вызвать delete[] на распределении массива со словом 
              // new[]! 
}
 
Итак, урок тут заключается в следующем: 

 
Чтобы распределить массив какого-нибудь типа (например int) динамически, 
вы должны использовать новый 
int[числоЭлементовМассива]


 
Массивы  распределённые  с  new[],  позже  должны  быть  удалены  с  delete[], 
иначе вы получите утечку памяти! (этот  delete[]  с квадратными скобками! А 
не обычное удаление). 


Достарыңызбен бөлісу:
1   ...   144   145   146   147   148   149   150   151   ...   252




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет