13.01.2015 Views

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

41<br />

Число байтов, выделяемое массиву при инициализации, определяется<br />

как произведение размера типа и числа членов. Для резервирования и освобождения<br />

этой памяти целесообразно использовать выражения<br />

Пример:<br />

имяМассива = new Тип [ Размер ]…;<br />

delete [ ] имяМассива;<br />

void Arrays2 () {<br />

AnsiString *whos;<br />

whos = new AnsiString[4];<br />

whos[0] = MyForm–>Edit1–>Text;<br />

whos[1] = "Mr. " + whos[0];<br />

whos[2] = "Dr. " + whos[0];<br />

whos[3] = *(whos + 1);<br />

MyForm–>RichEdit1–>Text =<br />

whos[0] + '\n' + whos[1] +'\n' + whos[2] + '\n' + whos[3];<br />

delete [] whos;<br />

}<br />

Имя каждого чле<strong>на</strong> массива состоит из имени массива и индексов в<br />

квадратных скобках. Программа обрабатывает многомерные массивы, <strong>на</strong>чи<strong>на</strong>я<br />

с членов, отмеченных крайними справа индексами. Имя массива указывает<br />

<strong>на</strong> адрес его нулевого чле<strong>на</strong>. Так как <strong>на</strong>чальный адрес массива уста<strong>на</strong>вливается<br />

автоматически в момент инициализации, он не может быть переопределен<br />

пользователем и, следовательно, име<strong>на</strong> массивов нельзя присваивать<br />

друг другу. Копирование массивов выполняется почленно, в том числе с помощью<br />

специальных функций.<br />

Массив передается в функцию только по ссылке <strong>на</strong> свой адрес. При передаче<br />

массива в функцию в качестве аргумента указывается имя массива, а<br />

при определении функции с многомерным массивом параметром задается<br />

имя массива и все размеры, кроме первого:<br />

void F1 () { AnsiString x[3]; F2 (x); ShowMessage (x[0] + ‘ ‘ + x[1]); }<br />

void F2 (AnsiString y[3]) { y[0] = “Привет”; *(y+1) = “Салют”; }<br />

void F3 () {<br />

int x[2][2]; F4 (x); ShowMessage (IntToStr (x[0][0]) + ‘ ‘ + IntToStr (x[0][1]));<br />

}<br />

void F4 (int y[][2]) { y[0][0] = 1; y[0][1] = 2; }

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!