Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
57 / 48 / 5
Регистрация: 19.11.2017
Сообщений: 857

Возврат по ссылке

04.02.2021, 15:25. Показов 3123. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Куда array_push записывает данные и как обратиться к массиву ?

PHP
1
2
3
4
5
6
7
<?php
function &collector() {
  $collection = array();
  return $collection;
}
array_push(collector(), 'foo');
?>
Спасибо)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.02.2021, 15:25
Ответы с готовыми решениями:

Возврат по ссылке
Приветствую всех! Есть пример из книги Р. Лафоре &quot;Объекто-ориентированное программирование в C++&quot;: #include &lt;iostream&gt; ...

Возврат по ссылке
Вычитал давно еще, что если возвращать статический обьект из метода и присвоить его констатной ссылке то он продолжить жить пока видима эта...

Наследование, возврат по ссылке..
Есть такое :wall:Я не могу понять, как реализовать :help: :wall:Подсказывать, как это можно сделать. :help: Вот мой #include...

25
57 / 48 / 5
Регистрация: 19.11.2017
Сообщений: 857
05.02.2021, 12:37  [ТС]
Студворк — интернет-сервис помощи студентам
Jewbacabra, Спасибо, все стало понятно!

Я так понимаю, что тут ещё играет роль то, что $value имеет область видимости public?
Нет.
Я имел в виду, что только в этом случае(когда область видимости переменной public) мы можем обратиться к $value, то есть обратиться к области памяти $value.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.02.2021, 12:47
Цитата Сообщение от mikello Посмотреть сообщение
Я имел в виду, что только в этом случае(когда область видимости переменной public) мы можем обратиться к $value, то есть обратиться к области памяти $value.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
class foo {
    private $value = 42;
 
    public function &getValue() {
        return $this->value;
    }
 
    public function setValue($val) {
        $this->value = $val;
    }
}
 
$obj = new foo;
$myValue = &$obj->getValue();
$myValue = 2;
 
var_dump($obj->getValue()); // 2
 
$obj->setValue(10);
 
var_dump($myValue); // 10
1
57 / 48 / 5
Регистрация: 19.11.2017
Сообщений: 857
05.02.2021, 12:52  [ТС]
Jewbacabra, хороший пример, то есть я так понимаю, можно посредством ссылок влиять на изменение переменных с областью видимости private в классе?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.02.2021, 12:55
Цитата Сообщение от mikello Посмотреть сообщение
то есть я так понимаю, можно посредством ссылок влиять на изменение переменных с областью видимости private в классе?
Можно, но не нужно
1
57 / 48 / 5
Регистрация: 19.11.2017
Сообщений: 857
05.02.2021, 12:59  [ТС]
Jewbacabra, ок. А вот насчет самого первого примера:

PHP
1
2
3
4
5
6
7
<?php
function &collector() {
  $collection = array();
  return $collection;
}
array_push(collector(), 'foo');
?>
Этот пример демонстрирует (в данном виде без static $collection), что мы теряем доступ к массиву, т.е. он находится в памяти, но мы не знаем и не можем к нему обратиться после вызова array_push. Это так? То есть такой код приводит к утечке памяти.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.02.2021, 13:08
Цитата Сообщение от mikello Посмотреть сообщение
Это так? То есть такой код приводит к утечке памяти.
Счетчик ссылок станет равен 0, так что никакой утечки не будет. Счетчик ссылок мог бы быть не нулевым, например в такой ситуации
PHP
1
2
3
$collection = array();
$collection[] = &$collection;
return $collection;
Но и тут сборщик мусора должен обнаружить эту циклическую ссылку и удалить.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.02.2021, 13:08
Помогаю со студенческими работами здесь

Возврат по константой ссылке
Всем добрый день! И снова я с глупыми вопросами, простите заранее :-const int&amp; mysum(int&amp; num, int incr = 0) { num += incr;...

Возврат значения по ссылке
Долго гуглил, но что-то так и не понял. Почему слева от знака = может использоваться только функция, возвращающая ссылку?

Возврат значений по ссылке и по адресу
Добрый день. Прочитал, что большие структуры и классы рекомендуется возвращать из функции по ссылке и не рекомендуется по адресу....

Как происходит возврат значения по ссылке?
Добрый вечер, распишите пожалуйста детально про то, как происходит возврат значения по ссылке. Можно вот на этом примере: alpha&amp;...

Возврат значения функции по ссылке возможен?
Добрый день! Хочу уточнить некоторый принцип работы с функциями, возвращающими значения. Есть ли возможность в C# возвращать значения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru