Посилання (програмування)

Посилання в програмуванні - це об'єкт, який вказує на певні дані, але не зберігає їх. Отримання об'єкта по посиланню називається разименованія.

Посилання не є покажчиком, а просто є іншим ім'ям для об'єкта.

У мовах програмування посилання може бути реалізована як змінна, що містить адресу осередку пам'яті. У деяких мовах високого рівня також є можливість використовувати посилання на об'єкти при передачі об'єктів в підпрограму і з підпрограми.


1. Приклади реалізацій посилань

1.1. C + +

Посилання в C + + повинні бути пов'язані з яким-небудь об'єктом. Таким чином, "нульові посилання" (не пов'язані з яким-небудь об'єктом), в C + + відсутні. Разименованія посилань в C + + не вимагає спеціального оператора. Таким чином, в C + + посилання - форма передачі адреси в стек прямо, минаючи копіювання і покажчики.

У наступному прикладі параметр x передається за значенням, а y - по посиланню. Результат роботи функції поміщається в y:

 # Include   using  namespace  std  ;  / / Без цього запису нам би довелося дописувати "std ::" до cout і endl  void  square  (  int  x,  int  &  result  )  {  result  =  x  *  x  ;  }  int  main  (  )  {  int  y  =  0  ;  / / Ініціалізація  square  (  3  , Y  )  ;  cout  <<  "Y ="  <<  y  <<  endl  ;  / / Y = 9  return  0  ;  } 

1.2. Java і C #

У цих мовах поняття покажчика відсутня, а замість нього використовується поняття посилання. Разименованія посилань і взяття адрес об'єктів для присвоювання їх посиланнях не вимагає спеціального оператора.

1.3. PHP

Посилання в PHP - це засіб доступу до вмісту однієї змінної під різними іменами. Вони не схожі на покажчики C і не є псевдонімами таблиці символів. У PHP ім'я змінної і її вміст - це різні речі, тому один вміст може мати різні імена. Найближча аналогія - імена файлів Unix і файли - імена змінних є елементами каталогів, а вміст змінних це самі файли. Посилання в PHP - аналог жорстких посилань (hardlinks) в файлових системах Unix.

  $ A  =  'Text'  ;  $ B  = &  $ A  ;  print  $ B  .  '
'
; $ A = 5 ; print $ B . '
'
; ?>
 text 5 
Перегляд цього шаблону Типи даних
Неінтерпретіруемие
Числові
Текстові
Покажчик

Адреса Посилання

Композитні
Інші

Логічний Нижчий тип Колекція Перераховуються тип Виняток First-class function Opaque data type Recursive data type Семафор Потік Вищий тип Type class Unit type Void

Пов'язані теми