Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prog1_2_zao_2013.doc
Скачиваний:
6
Добавлен:
07.02.2016
Размер:
327.17 Кб
Скачать

Int n; puts("Введіть розмір масиву");

scanf("%d",&n); //введення розміру масиву (розмір – змінна)

int *ptri=(int*)malloc(n*sizeof(int)); //запит пам’яті

// ptri=new int*[n}; // для операцій new - delete

if(ptri==NULL) // перевірка виділення пам'яті

{puts("Помилка виділення пам'яті!"); return –1;}

// Програма

free(ptri); // звільнення пам’яті

// delete[]ptri; // для операцій new - delete

Приклад визначення двовимірного динамічного масиву:

Int n,m; puts("Введіть розмір масиву");

scanf("%d %d",&n,&m); // введення розмірів масиву

int **ma; //визначення покажчика на масив покажчиків

// запит пам'яті під масив з n покажчиків на рядки

ma=(int**)malloc(n*sizeof(int*));

// ma=new int*[n]; // для операцій new - delete

if(ma==NULL) // перевірка виділення пам'яті

{puts("Помилка виділення пам'яті!"); return -1;}

//запит пам'яті для m елементів в кожному рядку

for(int i=0;i<n;i++)

{ma[i]=(int*)malloc(m*sizeof(int)); ));

// ma[i]=new int [n]; // для операцій new - delete

if(ma[i]==NULL){puts("Помилка виділення пам'яті!");

free(ma); // delete[]ma;

return -1;} }

// програма

for(i=0;i<m;i++) free(ma[i]); //звільнення пам'яті

// delete ma[i]; //для операцій new - delete

free(ma); // звільнення пам’яті

// delete[]ma; //для операції new - delete

Структури. Це сукупність поіменованих об'єктів у загальному випадку різних типів. Кожна структура включає в себе один або декілька об'єктів (змінних, масивів, покажчиків, структур), які називають елементами (полями) структури.

Структурний тип (шаблон) визначає, скільки елементів і якого типу входять в структуру. Визначення шаблону структури починаєть­ся із слова struct, за яким у фігурних дужках розміщаються описи елементів, що входять в структуру. Шаблон структури має права типу. Під шаблон пам'ять не виділяється.

Після визначення структурного типу (шаблону) за його допомогою можна визначити конкретні структури, масиви структур, покажчики на структуру. Наприклад:

struct STUDENT{char name[20];//визначення структурного типу

 int age;

 float r;};

STUDENT st1, st2[3],*ptrst=&st1; //визначення структур

Для звернення (доступу) до елементів структури використову­ються уточнені імена. Наприклад:

st1.age=19; st1.r=4.3;

Для звернення до членів масиву структур використовується індекс, який вказують у квадратних дужках, наприклад:

cout<<st2[0].name; st2[1].age=20; st2[2].r=4.7;

При зверненні до членів структури через покажчик викорис­товуються операція стрілка або розіменування покажчика з ім'ям елемента структури після крапки. Нижче наведені обидві форми:

ptrstage=18; (*ptrst).r=4.5;

При визначенні структури можлива її ініціалізація, тобто при­власнення початкових значень елементам структури. Для цього після визначення структури ставиться знак '=' та у фігурних дужках через кому задаються значення елементів згідно структурного типу. Наприклад:

STUDENT st3={"Шевченко",20,4.9};

STUDENT st4[2]={{"Петров",20,4.4},{"Романов",19,4.3}};

Можна створювати і видаляти структури та масиви структур динамічної пам’яті. Для цього використовуються функції malloc() і free() або операцій new і delete. Нижче приведено приклад створення структури та масиву структур динамічної пам’яті:

struct REC{int a[2]; float b;};//визначення структурного типу

REC *rec1,*rec2; //визначення покажчиків на структуру

rec1=(REC*)malloc(sizeof(REC)); //запит пам'яті під структуру

// rec1=new REC; // для операцій new - delete

if(rec1==NULL) // перевірка виділення пам'яті

{puts("Помилка виділення пам'яті"); return -1;}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]