cpp

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

Объявление указателя на массив выглядит следующим образом:

var <Переменная> *[<Число элементов>]<Тип> = &<Массив>

Пример:

var arr [3]int = [3]int{10, 20, 30}
fmt.Println(arr)       // [10 20 30]
var p *[3]int = &arr   // Указатель на массив
fmt.Println(p)         // &[10 20 30]
fmt.Printf("%v\n", p)  // &[10 20 30]
fmt.Printf("%#v\n", p) // &[3]int{10, 20, 30}

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

p[0] = 4               // Способ 1
fmt.Println(p[0])      // 4
(*p)[1] = 5            // Способ 2
fmt.Println((*p)[1])   // 5
fmt.Println(arr)       // [4 5 30]

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

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp