Хорошо, обо всем по порядку.
Массивы не являются указателями.Они просто разлагаются на указатели, когда это необходимо.Думайте о массиве как о указателе, который уже имеет некоторые данные, неправильно размещенные / распределенные к нему.
lineptr
: это просто возвращает массив.Не много, чтобы сказать.
*lineptr
: Это то же самое, что и доступ к первому местоположению вашего массива.*lineptr
= lineptr[0]
.Это просто случается, чтобы вернуть char *
**lineptr
: это доступ к первому расположению массива, а затем разыменование этого местоположения.**lineptr
= *(lineptr[0])
.Поскольку ваш массив содержит char*
, он вернет char
, хранящийся в char *
в слоте 0 массива.
*lineptr[i]
: Это отменяет char*
, хранящийся в i.Таким образом, char
, на который указывает lineptr[i]
, возвращается.