Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
2 / 2 / 0
Регистрация: 24.11.2016
Сообщений: 77

Использование ссылок и обычных имен переменных

08.07.2017, 23:26. Показов 5572. Ответов 82
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, у меня такой вопрос. Может быть он покажется довольно неинтересным вам, но мне просто надо понять кое-что.
Ссылка - это дополнительное имя для объекта. Имя объекта ссылается на его адрес.

Я правильно понимаю, что когда мы обращаемся к имени ссылки сначала мы получаем ее адрес, на который ссылается
ссылка (содержащийся в оригинальном имени переменной), а далее значение? А имя переменной также ссылается на некую область памяти, только вот при обращении к ней, мы сразу получаем конкретно значение?

Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.07.2017, 23:26
Ответы с готовыми решениями:

Использование имен предопределенных объектов в качестве имен переменных
Есть код: #include <iostream> using namespace std; void func() { int cout; cout <<cout <<endl; }

Использование переменных вместо имен таблицы и полей в SQL-запросах
что-то у меня ругается на подобную запись, пишет: 'неправильный синтаксис около конструкции "KLIENTS"' где-то я не так пишу: ...

Использование длинных имен переменных увеличивает вес файла с программой?
Использование длинных имен переменных увеличивает вес файла с программой?

82
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
19.07.2017, 13:31
Студворк — интернет-сервис помощи студентам
daun-autist, а прятаться-то зачем? Боязнь ссылок-указателей, обычно, излечима. В этой теме, в частности нет ни одного утверждения о том, что ссылка, это указатель или наоборот. Но паранойя есть.
Сказано, не более, чем сказано у B.S. Для особо понятливых B.S. здесь это не bulll shit а аббревиатура имени и фамилии. Не перепутайте снова.
Отписываюсь.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
19.07.2017, 14:16
Цитата Сообщение от IGPIGP Посмотреть сообщение
Это мелковато.
Твой же код еще меньше.
И вообще делает не то.
Цитата Сообщение от IGPIGP Посмотреть сообщение
Опять хитровыдуманное правило, которое можно реализовать под капотом.
С указателями нельзя. А под капотом и указателей не бывает.
Мой код держит живым временный объект, а не статический,
который и так будет жить всю программу (почти).
GbaLog-, это вообще не то и не о том.

Не по теме:

Цитата Сообщение от daun-autist Посмотреть сообщение
Не знаю даже, кто хуже
Массиваторы, имхо. Там совсем всё плохо. :)

0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
20.07.2017, 00:54
Цитата Сообщение от Croessmah Посмотреть сообщение
С указателями нельзя. А под капотом и указателей не бывает.
Мой код держит живым временный объект, а не статический,
который и так будет жить всю программу (почти).
Потому что:
Цитата Сообщение от Croessmah Посмотреть сообщение
делает не то
естественно. Почему он должен делать то? Он показывает, что если хочется что-то хитро выдумать, то это не проблема. Присвоить указателю статический объект, типа массив, это нормально? Это тяжелое наследие С. Конечно. Но в широком смысле, это то же "хотелка" и она именно
Цитата Сообщение от Croessmah Посмотреть сообщение
С указателями нельзя
показывает, что можно. С любым типом можно придумать что угодно. Что и произошло. Две подкатегории типов и целая жменя ссылок. Что касается массированного массирования массивов, то они тут не при чём. Массив указателей можно создать легко. Массив ссылок нельзя создать. Ссылку нельзя объявить и потом присвоить. Хотя нужно-то было бы родить для неё операцию переустановки на новый объект. Например паскалевское := подошло бы, для синтаксического отражения. А доступ к объекту на запись, - простым =. И был бы вменяемый тип.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
20.07.2017, 05:50
Цитата Сообщение от IGPIGP Посмотреть сообщение
Присвоить указателю статический объект, типа массив, это нормально?
Нормально. У нас же разложение имеется.
А вот продлите время жизни временного объекта с помощью указателя.
Вы же заявили что можно. Вперед.
Цитата Сообщение от IGPIGP Посмотреть сообщение
Он показывает, что если хочется что-то хитро выдумать, то это не проблема.
Странное заявление.
- Давайте сделаем автомобиль.
- Мы всё сделали.
- Но это же молоток.
- Но он показывает, что если хочется что-то хитро выдумать, то это не проблема.

В общем, гоните Вы, простите за мой французский.
Цитата Сообщение от IGPIGP Посмотреть сообщение
показывает, что можно.
Ну покажите же как можно.
Ваш код вообще не о том.
Диалог выше как раз о Вашем коде.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
20.07.2017, 06:52
Цитата Сообщение от Croessmah Посмотреть сообщение
А вот продлите время жизни временного объекта с помощью указателя.
Мне вот интересно, хоть кто-то на практике продлевает жизнь временного объекта с помощью ссылки? Или это нужно только для "а вот у ссылки есть, а у указателя нету!"?
Ну серьезно, того же эффекта можно достигнуть просто убрав амперсанд.
2
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
20.07.2017, 07:43
Цитата Сообщение от Renji Посмотреть сообщение
хоть кто-то на практике продлевает жизнь временного объекта с помощью ссылки?
да постоянно, как бы, если вы от таком:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
void foo(const std::string & s)
{
    //do smth
}
 
int main()
{
    foo("ololo");
    
    std::cout << "Hello, world!\n";
}
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
20.07.2017, 08:20
Цитата Сообщение от Croessmah Посмотреть сообщение
Нормально. У нас же разложение имеется.
Указатель это указатель, а массив это массив. Однако существует (испокон веков) практика для char присваивать массив указателю. Само по себе это не так уж и плохо. Бред как бред. По настоящему плохо, влияние этого факта на мозг. То есть позанимавшись С++ достаточно долго, человек начинает привыкать к этому как к норме.

Цитата Сообщение от Croessmah Посмотреть сообщение
А вот продлите время жизни временного объекта с помощью указателя.
указатель не умеет, да. И на стенку писать тоже. Непонятно, кстати, почему ссылку при её колченогости не наделили такой способностью.
Цитата Сообщение от Croessmah Посмотреть сообщение
Странное заявление.
- Давайте сделаем автомобиль.
- Мы всё сделали.
- Но это же молоток.
- Но он показывает, что если хочется что-то хитро выдумать, то это не проблема.
Вот это, особенно хорошо. Делали авто а получили молоток... Это хорошее подтверждение предыдущего текста. Если указателю можно присвоить молоток, то его можно присвоить чему угодно.
Цитата Сообщение от Croessmah Посмотреть сообщение
Ну покажите же как можно.
Вот это твоё жду, просто восхищает. Я привёл цитату по поводу того, что ты назвал "глупостью" и уже не жду ни извинений ни хотя бы признания того, что ты считал это "глупостью" и был готов всенародно признать глупостью в любой момент всю свою жизнь. И оказалось, что просто говорил и думал не то, что нужно. Но, заметь, я долго и терпеливо ждал какого-то признания ошибки. А вот это твоё (победоносное) - ЖДУ, с третьего раза и послужило желанием сказать, что и я жду. Где "глупость"?
Цитата Сообщение от Croessmah Посмотреть сообщение
Диалог выше как раз о Вашем коде.
Нет. Диалог о другом.
Цитата Сообщение от Renji Посмотреть сообщение
Мне вот интересно, хоть кто-то на практике продлевает жизнь временного объекта с помощью ссылки? Или это нужно только для "а вот у ссылки есть, а у указателя нету!"?
Можно бы использовать промежуточную переменную и забыть. Но... Порождён гигантской силы сайд-эффект! И он поднят на щит как аргумент.
А ведь B.S. печётся не только о безопасности (невозможность создать не инициализированную ссылку). Он просит не передавать не констнантных ссылок в функции. Передавайте указатели, говорит он. Тут всё дело в читаемости и сайд эффекте. Изменение по ссылке, это сайд-эффект, а в месте вызова указатель показывает, что он может изменить значение "своего" объекта. А ссылка ведь вызывается не на ссылке (у-упс!), она вызывается на типе значения... и никто не знает получит функция копию или под капотом (то чего не бывает) указатель ссылку.
Причём, передавать большие объекты , - векторы например, следовательно нужно либо по константным ссылкам, либо по указателям. Класс! Но не слушаются его. Почему-то. Передают по обычным.
А вот фича с продлением жизни временного объекта, как сайд-эффект это просто необходимая вещь. Тут читаемость побоку. Я рад, что кроме данной возможности аргументов нет.
Массивы ссылок, и ссылки как полноценный тип с раздельным объявлением и инициализацией остаются как и "глупость" без ответа. Боремся с инакомыслием? Не удивительно.

Добавлено через 5 минут
Цитата Сообщение от GbaLog- Посмотреть сообщение
да постоянно, как бы, если вы от таком:
В Вашем примере достаточно неконстантного(!) указателя на char. Вы правильно поняли как связан мой ответ для указателей на данное заявление Croessmah, Правда оно катит только для char*, но было бы весело, если бы любой константный указатель можно было бы инициализировать константой (времени компиляции, конечно) данного типа. Всего-то делов, - всем статическую память и дело в шляпе. Молотки и автомобили будут неотличимы.
0
Заблокирован
20.07.2017, 10:01
Цитата Сообщение от GbaLog- Посмотреть сообщение
да постоянно, как бы, если вы от таком:
Где тут продление жизни? Временный объект типа std::string сдыхает после окончания вычисления строки 10.

Продление жизни — это когда временный объект, создаваемый при вычислении выражения, не уничтожается по окончании вычисления выражения (достижении точки с запятой), а продолжает жить дальше. Типичный пример — возвращаемый из функции по значению объект, привязываемый к ссылке. Или привязка prvalue к ссылке (const int& ri = 5;).

Добавлено через 1 минуту
Цитата Сообщение от IGPIGP Посмотреть сообщение
В Вашем примере достаточно неконстантного(!) указателя на char.
Нет, нужен константный.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
20.07.2017, 11:06
Цитата Сообщение от daun-autist Посмотреть сообщение
Нет, нужен константный.
Да, не вгляделся, что там string& . Я имел ввиду нечто вроде:
C++
1
2
3
4
5
6
7
8
void foo(char * str){
cout<<str<<endl;
}
 
int main(int argc, char* argv[])
{
    
foo("ololo!");//c-str литерал имеет тип const char[]
0
Заблокирован
20.07.2017, 11:15
IGPIGP, я понял, что ты имел в виду. Без const работает только в MSVC, это нестандартное расширение.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
20.07.2017, 12:11
Цитата Сообщение от daun-autist Посмотреть сообщение
GPIGP, я понял, что ты имел в виду.
Я рад.
Цитата Сообщение от daun-autist Посмотреть сообщение
Без const работает только в MSVC, это нестандартное расширение.
Н-нет. Нестандартное "сужение", это если где-то не работает.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
20.07.2017, 15:43
Renji, а если нет конструктора копирования?
GbaLog-, в Вашем примере нет того, о чем мы говорим.
IGPIGP, в Вашем примере нет того, о чем Вам пишут. Вы какую-то дичь пишите, выдавая свои фантазии за истину. Уже признали что указатели не могут всего что могут ссылки, хотя до этого практически лбом бились, доказывая обратное.
Идем дальше и тоже с временным объектом. Возьмите адрес временного объекта без proxy-функции. Например,
C++
1
2
3
4
5
void f1(const Some *) {}
void f2(const Some &){}
//...
f1(&Some{});//фигу
f2(Some{});//норм
Как напишите, двинемся дальше в сторону различий.

IGPIGP, это именно расширение. Присваивание строкового литерала указателю не на константу запрещен стандартом уже давно.
C++
1
foo("ololo!");//c-str литерал имеет тип const char[]
Игорь, типом литерала этого будет const char[7], и это не тоже самое, что const char[].
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
20.07.2017, 16:52
Цитата Сообщение от Croessmah Посмотреть сообщение
Renji, а если нет конструктора копирования?
То компиляция упадет где-то в районе return temporaryObject.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
20.07.2017, 16:58
Renji, конструктор копий может быть просто закрыт, а не удален. Для внешнего кода конструктор копирования использовать нельзя - недоступен, но для самого класса и друзей - пожалуйста.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
20.07.2017, 17:03
Цитата Сообщение от Croessmah Посмотреть сообщение
Renji, да ладно? Конструктор копий может быть просто закрыт, а не удален. Для внешнего кода конструктор копирования использовать нельзя - недоступен, но для самого класса и друзей - пожалуйста.
И при этом во внешний мир торчит функция возвращающая объект класса, а не ссылку на него? Возвращаемся к исходному вопросу - на практике кто-то так делает?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
20.07.2017, 17:20
Renji,
C++
1
2
3
4
5
6
7
template<typename F>
void foo(F f)
{
   const auto &r = f();//не важно, может ли возвращаемый объект перемещаться/копироваться в данном контексте
   r.action1();
   r.action2();
}
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
20.07.2017, 17:42
Цитата Сообщение от Croessmah Посмотреть сообщение
не важно, может ли возвращаемый объект перемещаться/копироваться в данном контексте
Зато, в этом контексте становится важно являются ли action1 и action2 константными методами. Причем, с чего вдруг на функтор накладываются подобные ограничения - решительно непонятно. Я повторюсь, на практике такое используется?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
20.07.2017, 17:53
Renji, это пример. Можно и от константности избавиться без проблем.
И так всё с телефона пишу, задолбали уже своим примером.
Ну не могу я рассписать всё, не удобно это.
Каждое смещение курсора - боль.
Нужно помогать человекам, стараться додумать.
В своём проекте использую в ряде случаев.
Увижу в чужом коде, покажу. Я ж не могу весь код,
который когда-либо видел, помнить наизусть.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
20.07.2017, 19:58
Цитата Сообщение от Croessmah Посмотреть сообщение
Вы какую-то дичь пишите, выдавая свои фантазии за истину.
Цитата Сообщение от Croessmah Посмотреть сообщение
хотя до этого практически лбом бились, доказывая обратное
Цитата Сообщение от Croessmah Посмотреть сообщение
Возьмите адрес временного объекта
Я писал, что указатель нормальный тип. Он не может творить идиотский беспредел чудеса. А ссылка не может очень многих существенных вещей и может из временного объекта (под капотом) сделать локальную переменную. Гениально. Хотя это можно бы сделать руками. Для того чтобы видеть, что происходит. Я насытился твоей аргументацией.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
20.07.2017, 22:39
Цитата Сообщение от IGPIGP Посмотреть сообщение
сделать локальную переменную. Гениально. Хотя это можно бы сделать руками.
Еще и ссылку на объект с объектом путаем.
Простецкие различия:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
//g++  5.4.0
 
#include <iostream>
 
 
#define GENERATE_BODY(name) name() { std::cout << __PRETTY_FUNCTION__ << std::endl; }\
name(const name &) { std::cout << __PRETTY_FUNCTION__ << std::endl; }\
virtual ~name() { std::cout << __PRETTY_FUNCTION__ << std::endl; }
 
 
 
struct Base
{
    GENERATE_BODY(Base)
    void action() const {
        std::cout << "Base::action()" << std::endl;
    }
    virtual void action_v() const {
        std::cout << "Base::action_v()" << std::endl;
    }
};
 
 
 
 
 
 
template<typename F>
void foo_with_reference(F f)
{
    const Base &r{f()};//Нет преобразования (кому нужно, может сам дописать для учета const и тому подобного)
    r.action();//Работаем строго с Base
    r.action_v();//Виртуальность работает
}
 
 
template<typename F>
void foo_without_reference(F f)
{
    Base r{f()};//Получится преобразование, если f возвращает объект-наследник Base.
    r.action();//Это уже другой объект, никак не связанный с тем, который вернула f
    r.action_v();//"Пропала виртуальность". Печалька.
}
 
 
template<typename F>
void foo_with_auto(F f)
{
    auto r{f()};//Не факт, что там Base. Обязательно в наследнике должен быть доступен конструктор копирования/перемещения. Класс не должен быть абстрактным.
    r.action();//Если f вернула наследника Base, то уже логика начальной функции нарушена.
    r.action_v();//Норм.
}
 
 
 
 
struct Derived: Base
{
    GENERATE_BODY(Derived)
    void action() const {
        std::cout << "Derived::action()" << std::endl;
    }
    void action_v() const override {
        std::cout << "Derived::action_v()" << std::endl;
    }
};
 
 
struct AbstractDerived: Base
{
    GENERATE_BODY(AbstractDerived)
    void action() const {
        std::cout << "AbstractDerived::action()" << std::endl;
    }
    void action_v() const override {
        std::cout << "AbstractDerived::action_v()" << std::endl;
    }
    virtual void action_pure_v() const = 0;
};
 
struct NonAbstract: AbstractDerived
{
    GENERATE_BODY(NonAbstract)
    void action_pure_v() const override {
        std::cout << "NonAbstract::action_v()" << std::endl;
    }
};
 
 
 
 
 
Derived create_derived()
{
    return {};
}
 
 
AbstractDerived &create_non_abstract()
{
    static NonAbstract obj;
    return obj;
}
 
 
 
 
int main()
{
    //create_non_abstract();//Чтобы создался статический объект
    std::cout << "\nwithout reference:" << std::endl;
    foo_without_reference(create_derived);
    //foo_without_reference(create_non_abstract);
    std::cout << "\nwith reference:" << std::endl;
    foo_with_reference(create_derived);
    //foo_with_reference(create_non_abstract);
    std::cout << "\nwith auto:" << std::endl;
    foo_with_auto(create_derived);
    //foo_with_auto(create_non_abstract);
    std::cout << "\nend of main" << std::endl;
}
http://rextester.com/PGG6126

Не по теме:

Кстати, в C++17 описано не два, а три контекста с продлением жизни.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.07.2017, 22:39
Помогаю со студенческими работами здесь

Удалить из имен обычных файлов (regular file) все цифры
Удалить из имен обычных файлов (regular file) все цифры.

Чем ссылки тега nav отличаются от обычных ссылок на странице?
Тега nav

Инициализация обычных статических переменных
Добрый вечер. Читаю небезызвестную философию джава. В одной из глав есть пример о порядке иницыализации статических и обычных полей. Код...

Отличие обычных переменных и глобальных
Здравствуйте, расскажите пожалуйста в чем отличие глобальных переменных об обычных объявляемых в процедуре?! Делал таймер, когда объявил...

Чтение имён переменных из файла и раскрытие этих переменных
Допустим есть скрипт &quot;1&quot;,в котором описано: set ueqrxbfmfi=t for /f &quot;usebackq tokens=*&quot; %%a in (&quot;test.txt&quot;) do set...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru