Найти в Дзене
Leonid Karnauh

Указатели. Адреса. Ссылки

Введем очередной уровень. Переменная, которая хранит адрес другой переменной. Указатель всегда имеет тип хранимой переменной.

//сперва заведем переменную

int a = 45;

//сохранить адрес переменной в указатель

int * b= &a;

& это попытка взять адрес объекта.

//меняем значение по адресу.

//здесь a = 400, (*b) = 400 -- то есть меняется одна область памяти.

*b = 400;

Связь между одномерным массивом и указателем на int. Одномерный массив это ссылка на область памяти. Покажем, как сделать еще одну ссылку на тот же массив.

int a[]= {43,67,78};//создать массив из 3-х эл-тов

int * p = a;

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

{

p++;//сдвинем по массиву на ячейку

*p = i*i;

}

Как это происходит с двумерным массивом.

int a[rows][cols];

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

{

int ** p = a[i][0];

for(j = 0; j < cols; j ++)

{

p[ i][j] = i*rows + j;

p++;

}

}