powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Только лишь для экономии RAM ???
9 сообщений из 9, страница 1 из 1
Только лишь для экономии RAM ???
    #32279035
Бобер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С++
Через год мне понадобиться С++ и поэтому на досуге читаю книжки .
В связи с этим решил посетить Вашу часть форума.
Дошел до указателей и ссылок.
Как я понял указатель это таже переменная, которая указывает на адрес ячейки , где содержится значение обычной переменной.
int simple;
int pS=0;
Указатель можно "нацелить" на другую переменную.
pS=&simple
А ссылка некий псевдоним (хвостик), который лазит все время за переменной.
И если шото сделать со ссылкой, то это отразится на значение переменной. Но ссылку можно присвоить лишь единично.
Механизм ссылок и указателей используется в основном для экономии памяти и для оптимизации быстродействия программы. При работе с объектами классов (особенно с много жрущими объектами) многое делается через ссылки и указатели. Так вот , только ли для экономии мозгов используются ссылки / указатели или еще где то и для чего?
p.s. В с++ я ПОКА чайник.
...
Рейтинг: 0 / 0
Только лишь для экономии RAM ???
    #32279078
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Важная роль указателей являеться еще и их возможность рассматривать область памяти как территория объекта данного типа. Она очень понадобиться при наследовании .
...
Рейтинг: 0 / 0
Только лишь для экономии RAM ???
    #32279269
Бобер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
//Важная роль указателей являеться еще и их возможность рассматривать //область памяти как территория объекта данного типа. Она очень понадобиться //при наследовании .

Ух ты. А по другому как это сказать?
...
Рейтинг: 0 / 0
Только лишь для экономии RAM ???
    #32280756
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни фига себе "только лишь"! Да знаешь ли ты, костями скольких программистов выложена эта самая экономия RAM?? :)

Конечно, в Windows с этим стало попроще, а в DOS -- килобайт 600 в лучшем случае, а дальше хоть трава не расти.

Но это ещё не всё. Если ты хочешь, чтобы какая-нибудь функция что-то сделала с переменной, которую ты ей передашь, то если ты передашь не ссылку и не указатель, а копию, то функция может с этой копией делать что угодно, а твоя переменная от этого не изменится.
...
Рейтинг: 0 / 0
Только лишь для экономии RAM ???
    #32280782
Бобер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ой Вэй

//Но это ещё не всё. Если ты хочешь, чтобы какая-нибудь функция что-то сделала с переменной, которую ты ей передашь, то если ты передашь не ссылку и не указатель, а копию, то функция может с этой копией делать что угодно, а твоя переменная от этого не изменится.

Передача переменных в функцию можно организовать по значению (тогда создаётся копия и это не влияет на саму переменную) и по ссылке (тогда если функция изменит значение переменной,это отразится на переменной в вызывающей программе). Ты это имел ввиду?

У меня башка идет кругом от этих указателей и ссылок.
Щас добрался до возврата функцией нескольких значений.Это можно осуществить через ссылки. Только никак не догоню, а нахрен это надо?
...
Рейтинг: 0 / 0
Только лишь для экономии RAM ???
    #32281107
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты это имел ввиду?
Да, я имел в_виду именно это. Отмечу ещё, что ты можешь передать в функцию указатель (по значению :) ), и тогда сам указатель не изменится (продолжит указывать на ту же адрес в памяти), но ту переменную, на которую он указывает, функция сможет изменить.

Зачем возвращать несколько значений? Не соображу как это сказать в общем виде, вот пример.
Предположим, тебе нужна функция поиска кратчайшего пути на графе, причём сам путь тебе не нужен, а только его длина в метрах (L) и количество звеньев (N).
Тут есть куча вариантов.
1. Функция возвращает N или L в зависимости от ещё одного параметра.
2. Функция возвращает N и меняет переданный по ссылке L.
3. Функция меняет переданные по ссылкам N и L.
Если мы знаем, что такое структура:
4. Функция возвращает структуру с N и L.
5. Функция меняет переданную по ссылке структуру с N и L.

Структуры пока отложим, тем более что невозможно для каждого чиха объявлять новый тип структур.

Вариант 2 не пройдёт, если тебе понадобится ещё что-нибудь от найденного пути (например, самый маленький диаметр, если речь идёт о трубах -- пройдёт ли там слон. Или кошка.).
Вариант 1 требует двух вызовов одной и той же функции, выполнение которой занимает время (ладно, RAM'a у тебя до фига, но время-то бежит).
А у варианта 3 этих недостатков нет. Возвращай сколько хочешь результатов при только одном вызове функции.

Есть ещё вариант, при котором меняются глобальные переменные, известные и тебе и внутри функции, но это надо делать только когда очень припечёт.
...
Рейтинг: 0 / 0
Только лишь для экономии RAM ???
    #32281128
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, в первом посте ты фигню написал:

int simple;
int pS=0;
Указатель можно "нацелить" на другую переменную.
pS=&simple


Если simple -- int, то &simple это int*.

Либо
Код: plaintext
int& pS1 = simple;

либо
Код: plaintext
1.
int* pS2;
pS2 = &simple;

либо
Код: plaintext
int* pS3 = &simple;
...
Рейтинг: 0 / 0
Только лишь для экономии RAM ???
    #32281204
й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой Вэй
да ладна тибе. указатель это пачти что инт, может ано даже работать будит,
йэсли кампилятар не шибко умный
...
Рейтинг: 0 / 0
Только лишь для экономии RAM ???
    #32281445
Бобер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ой Вэй
int simple;
int pS=0;
Указатель можно "нацелить" на другую переменную.
pS=&simple

да точно звездочку забыл поставить , вот так надо было
int simple;
int *pS=0;
pS=&simple

несколько вопросов от чайника
Я тренируюсь на компиляторе Borland C++ 3.1 под ДОС. Может быть сразу VC++ взять и на нем тренироваться (тем более на нем и придется писать).
Я уже задавал вопрос этот , но никто толком и не ответил.

Кстати в интернете прочитал, что в недалеком будущем Мелкософт наваяет виндоусы , которые будут работать без всяких API (на другом принципе). Что же станет с API, ему придет кабздеЦ?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Только лишь для экономии RAM ???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]