Опубликован: 10.12.2015 | Уровень: для всех | Доступ: платный
Лекция 10:

Массивы указателей

< Лекция 9 || Лекция 10 || Лекция 11 >
Ключевые слова: массив

Допускается объединять указатели в массивы. В приводимом ниже примере используется массив указателей на символьные массивы.

//==========================================================
// Name        : array_pointer.cpp
// Author      : Marat
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//==========================================================

#include <iostream>
using namespace std;

int main() {
	char *pointer[]={"Ivanov", "Petrov", "Sidorov"};

		int n=sizeof(*pointer)/sizeof(*pointer[0])-1;

		for(int i=0;i<n;i++)
		{
			cout<<"\nWorker ["<<i+1<<"] name is "<<pointer[i];
		}

	cout<<"\n"<<endl;
	return 0;
}

Результат:

Worker [1] name is Ivanov
Worker [2] name is Petrov
Worker [3] name is Sidorov

Операторы new и delete

Операторы new и delete позволяют выделять и освобождать динамическую память. В этом возникает необходимость при работе с большими массивами, требующими много памяти. В приводимой ниже программе создается указатель на вещественный массив, затем для него высвобождается память, пять его членов инициализируются, а их значения выводятся на печать, почле чего память, зарезервированная под массив, очищается.

//==========================================================
// Name        : dinamic.cpp
// Author      : Marat
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//==========================================================

#include <iostream>
using namespace std;
#include<math.h>

int main() {
	double *d;
	d=new double [100];

	for(int i=0;i<5;i++)
	{
		d[i]=sqrt(i);
		cout<<"\nd["<<i+1<<"]= "<<d[i];
	}
	cout<<"\n"<<endl;
	delete []d;
	return 0;
}

Результат:

d[1]=0
d[2]=1
d[3]=1.41421
d[4]=1.73205
d[5]=2
< Лекция 9 || Лекция 10 || Лекция 11 >
Зося Ковалева
Зося Ковалева

Хочу получить удостоверение. Сколько стоит оплата?

Aleksey Aplaev
Aleksey Aplaev
Россия, Chelybinsk
Александр Сидоров
Александр Сидоров
Россия, Самара