Двойной указатель – это двумерный массив

Двойные указатели не так часто используются в качестве двумерного массива.

Пример. Рассмотрим двойной указатель

int n=5;

int* pi = &n;

int **ppi = π

Построим схему ОЗУ для всех трех переменных

Рис.1.

Оператор

ppi[1][1] = 10;

синтаксически правильный, но логически ошибочен. В данном случае число 10 записано в наугад выбранной ячейке ОЗУ, что может приводить время от времени к фатальным ошибкам.

Оператор

ppi[0][1] = 20;

также синтаксически правильный, но логически ошибочен.

Пример. Рассмотрим массив строк

char *Arr[] = {“Hello”, “ ”, “World!”};

В соответствии с приоритетом операций тип Arr – это char*[], то есть массив типов char*, другими словами массив строк. Но строка – это одномерный массив элементов типа char, то есть тип строки – это char*. Поэтому тип Arr – это также и char**. Таким образом, мы показали, что Arr – двойной указатель.


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



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