Указатели и одномерные массивы

При определении массива ему выделяется память. После этого имя массива воспринимается как константный указатель того типа, к которому относятся элементы массива.

Исключения: sizeof(имя_массива); &имя_массива;

Указатели также используются при динамическом определении массивов:

тип указатель = new тип[размер];

Пример:

//Печать массива.

int n;

cin>>n;

int *a = new int[n]; /*Выделение в динамической памяти места под массив из n элементов */

 

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

cout << *(a + i) << “ “; //Проходим по эл-ам массива через указатель

delete []a; //Освобождаем выделенную память

Так как имя_массива – указатель константа, то его невозможно изменять, следовательно, *(a++) – недопустимая форма записи.

Пример:

#include <iostream>

#include <cmath>

#include <time.h>

 

using namespace std;

 

void main()

{

setlocale(0, "");

int dkpol = 0, dn, dk;

 

cout << "\n\nДИНАМИЧЕСКИЙ МАССИВ: \nВведите размерность массива не меньше '0': ";

cin >> dn;

int *din_mass = new int[dn];

cout << "\nНачальный массив: ";

srand(time(0));

for (i = 0; i < dn; i++){

*(din_mass + i) = rand() % 101 - 50;

cout << *(din_mass + i) << "\t";

}

cout << "\n\nВведите номер удаляемого эл-та: ";

for (i = numb; i < dn; i++)

*(din_mass + i) = *(din_mass + i + 1);

dn--;

 

cout << "Полученный массив: ";

if (numb == 0 && dn == 1)

cout << "Получен пустой массив.";

else

for (i = 0; i < dn; i++)

cout << *(din_mass + i) << "\t";

}

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: