Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Указатели 
:(
    Опции темы
mr.Anderson
Дата 2.8.2005, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Для чего нужны указатели и как ими пользоваться? В каких случаях нужно их использовать, а в каких - нет?

P.S. Я этот вопрос задал не от того, что не искал. У меня есть учебник по C++, но там об этом ничего не написано.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
gepard
Дата 2.8.2005, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Два указателя: на память(хранит адрес) и на значение. Нужны для того, чтобы указывать smile


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
mr.Anderson
Дата 2.8.2005, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Гениально. smile Я, разумеется, все понял. smile
А понормальней объяснить можно? Пример привести можете? (особенно желательно пример работы со строками с применением указателей).

Это сообщение отредактировал(а) sim7 - 2.8.2005, 16:37


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
ManiaK
Дата 2.8.2005, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



В поиск батенька, в FAQ здешнее. Всё уже давно описано.
PM MAIL WWW   Вверх
mr.Anderson
Дата 2.8.2005, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



У меня почему-то FAQ вашего сайта не отображается. smile Я там пробовал лазить. У меня вообще нет списка статей и страниц... Пробовал разные браузеры, не могу зайти.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
comcon1
Дата 2.8.2005, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: 12
Всего: 17



Пользоваться так:
Код

int a = 45;
int *ptr = &a; // взять адресс
(*ptr) += 5;   // получить из адресса a=50
cout << *ptr << endl; 

Если указатель на начало массива:
Код

int *a = (int*)malloc(100); // выделение памяти под массив из 50 элементов
for (int i=0; i<50; ++i)
  a[i] = random(34);
*(a+12) += 5; // обращение к 7-му элементу массива
//.....
free(a); // освобождение памяти




--------------------
PM MAIL   Вверх
mr.Anderson
Дата 2.8.2005, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



А можете привести пример работы со строками?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
kometa_triatlon
Дата 2.8.2005, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 384
Регистрация: 7.1.2005
Где: Киев

Репутация: 2
Всего: 6



sim7
Указатель на что-то нужен чтобы с этим чем-то работать. Проход по массиву тебе уже показали, часто используются при работе с объектами, при передаче параметров по указателю и т.д., то есть чтобы не тратить лишнюю память. Учись дальше и все поймешь, твой вопрос из разряда "зачем нужны массивы"...


--------------------
Всё очень просто: сказки обман,
Солнечный остров скрылся в туман,
Замков воздушных не носит земля,
Кто-то ошибся, ты или я.

--------------
Программирование - самое большое удовольствие, которое вы можете получить, будучи одетым.
PM MAIL ICQ   Вверх
ManiaK
Дата 2.8.2005, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



http://forum.vingrad.ru/index.php?showtopi...3;\.\.
Сомневаюсь, что поиск у вас тоже не работает.
PM MAIL WWW   Вверх
mr.Anderson
Дата 2.8.2005, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Спасибо. smile Поиск работает. smile


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
CoreDumped
Дата 2.8.2005, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 1.8.2005

Репутация: нет
Всего: 1



Ну конечно всё что нельзя сделать без указателей можно сделать при помощи переменных ссылок. Кстати в дочернем языке от микрософт с# нет указателей.
Ну а так можно отметить что функция в языке с или с++ возвратить может только одну переменную и что делать если таких переменных две, три, пять... сто...? Правильно использовать указатели (ну или ссылки). А после выполнения функции использовать указатель как надо. вот пример:
Код

#include <iostream>
using namespace std;
int itos(int num, char * str);
int main (void)
{
      int n=12345;
      int c;
      char * s = new char[10] ;
      c=itos(n,s);
      for(int i=0; i<=c; i++)
      {     
          cout << s[i] << '\n';
      }
      delete s;
      return 0;
}
int itos(int num, char * str)
{
      itoa(num,str,10);
      return srlen(str);
}

Кстати библиотека stl ох как не может существовать без указателей. Ведь итераторы в приметивном своём виде это и есть указатели (ну а не в приметивном классы smile )

Это сообщение отредактировал(а) CoreDumped - 3.8.2005, 08:07
PM MAIL   Вверх
ManiaK
Дата 2.8.2005, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Homo Sapience
***


Профиль
Группа: Комодератор
Сообщений: 1145
Регистрация: 3.8.2004
Где: ИУ5-93

Репутация: 5
Всего: 29



Цитата(CoreDumped @ 2.8.2005, 18:18)
Кстати библиотека stl ох как не может существовать без указателей.

Ни одна серьёзная библиотека/программа/функция даже не может существовать без указателей.
PM MAIL WWW   Вверх
comcon1
Дата 2.8.2005, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: 12
Всего: 17



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


--------------------
PM MAIL   Вверх
Chaos A.D.
Дата 3.8.2005, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 16.1.2005
Где: 09 RUS

Репутация: 6
Всего: 7



Если все еще остались темные пятна в использовании указателей, почитай мою, хм, "статью" тут. Писал я её давно. На тот момент у меня за плечами не было и полугода программирования. И поэтому сейчас можно очень много всего добавить и подправить. Об одних только указателях на функции-члены и приведении типов в стиле C++ можно столько понаписать.. Но тебе, как начинающему, хватит.
--------------------
Надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума...Ken Kesey - One Flew Over The Cocoo's Nest
PM MAIL   Вверх
LPBOY
Дата 3.8.2005, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



Цитата

если где соврал, не бейте сильно, а просто поправьте.

Chaos A.D., статья отличная, но есть парочка неточностей...


Цитата

Кстати, можно написать и так :
int &r = 12;
Тут не будет ошибки...

По Стандарту здесь ошибка. Все что ты расписал ниже(в статье) относится скорее к const int & r = 12;

Кстати тут мне вспомнился очень поучительный пример:
Код

const int ci = 7; 
const int* pci = &ci;
const int* &rpc = &ci;//выдает ошибку


,но

Код

const int ci = 7; 
const int* pci = &ci;
const int * const & rpc = &ci; //все ok


Цитата

const_cast – обеспечивает приведение типов, которое снимает или устанавливает константность у объекта. И не только константность...

ИМХО, только снимает, но не устанавливает константность.

Это сообщение отредактировал(а) LPBOY - 3.8.2005, 12:24
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
Chaos A.D.
Дата 3.8.2005, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 16.1.2005
Где: 09 RUS

Репутация: 6
Всего: 7



По поводу int &r = 12 - во времена написания статьи я пользовался только компилером Borland C++ 5.6, поэтому там оно работало. Естессно, что Borland-у до стандарта очень далеко...

На счет только снимает, но не устанавливает константность:

Eсли ты выполнишь
Код
const Foo *f = const_cast<const Foo*>(nonconst_foo);
где nonconst_foo - указатель на неконстантный Foo, получится, что хоть const из неconst-а получается автоматически, const_cast все же привел nonconst_foo к const Foo*. Это как в случае с implicit_cast, который не ввели в стандарт, потому что он реализовывался вручную и фактически ничего не делал, но вроде как приводил типы. Библии от страуструпа под рукой нет, так что некуда обратиться за истиной в последней инстанции.

Это сообщение отредактировал(а) Chaos A.D. - 3.8.2005, 14:17
--------------------
Надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума...Ken Kesey - One Flew Over The Cocoo's Nest
PM MAIL   Вверх
LPBOY
Дата 3.8.2005, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



Да, со вторым замечанием я видимо поспешил, сорри... Просто я о таком никогда не слышал.
Просмотрел несколько книг (в том числе Страуструпа) нигде не встретил упоминания, что const_cast может устанавливать константность (говорилось только о снятии константности), но и опровержения этому также не встретил... Но предназначение const_cast все-таки в снятии константности.

Это сообщение отредактировал(а) LPBOY - 3.8.2005, 15:48
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
mr.Anderson
Дата 3.8.2005, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Chaos A.D., статья, может быть, и хорошая, но я, к стыду своему, все равно ничего не понял...
Я одного не могу понять. Зачем программе работать с адресами переменных, а не с самими переменными (для этого ведь и существуют указатели и значки амперсанда, верно?). Кстати, еще непонятно, какая разница между указателями и "взятием адреса" через использование амперсанда (&)...


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Earnest
Дата 3.8.2005, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(LPBOY @ 3.8.2005, 10:08)
ИМХО, только снимает, но не устанавливает константность.

Цитата(Chaos @ 3.8.2005, 14:14)
Библии от страуструпа под рукой нет, так что некуда обратиться за истиной в последней инстанции.

В "библии" рыться не буду, уж больно толста smile , но вот MSDN говорит, что только снимает:
Цитата(MSDN)
The const_cast operator can be used to remove the const, volatile, and __unaligned attribute(s) from a class.

Хотя, видимо, написать приведение к не-конст-типу можно, но смысла большого в этом нет.




--------------------
...
PM   Вверх
LPBOY
Дата 3.8.2005, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



sim7, тебе нужен хороший учебник. ИМХО самый лучший учебник - учебник С. Липпмана.
Верней у него их даже два. Один - огромная книжка где почти весь С++ описан во всех подробностях и все хорошо разжевано. (В инете ее легко найти). Вторая книжка небольшая, но написана для совсем начинающих, в инете видел только на англ. яз. smile Хотя вот здесь http://forum.vingrad.ru/index.php?showtopic=33456 я видел несколько ссылок на нее, но насчет языка не знаю.
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
mr.Anderson
Дата 3.8.2005, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Цитата
В инете ее легко найти

А я что-то не нашел... Ее можно через инет скачать? Дайте ссылку, если можно... Прямую ссылку на файл, желательно.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
LPBOY
Дата 3.8.2005, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
mr.Anderson
Дата 3.8.2005, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Я ее грузил уже, оказывается... Там я еще больше ничего не понял, потому что там структура какая-то нездоровая. Начинает изучение языка с классов. Что-то у него там не то, там я еще больше не разобрался.
Может, дадите ссылку на учебник "стандартной" структуры (но для новичков, конечно)?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
LPBOY
Дата 3.8.2005, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



Читай с третей главы!!!
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
mr.Anderson
Дата 4.8.2005, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Понял, больше ссылок вы не знаете. smile Ладно, все равно спасибо.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
chipset
Дата 4.8.2005, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Читай Дейтела.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
LPBOY
Дата 4.8.2005, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



Хм... Дейтела опустили вот тут вот... smile
http://accu.org/cgi-bin/accu/rvout.cgi?fro...&file=cp003204a
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
mr.Anderson
Дата 4.8.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



smile Я в английском ничего не понимаю, но надпись "Not Recommended" понятна вполне. smile Так стоит ли его (Дейтела) покупать, и какая самая лучшая книга по C++ от него?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
chipset
Дата 4.8.2005, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



В другом ревью оно highly recommended: http://accu.org/bookreviews/public/reviews/c/c002311.htm


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
En_t_end
Дата 5.8.2005, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Цитата(sim7 @ 3.8.2005, 21:00)
Я одного не могу понять. Зачем программе работать с адресами переменных, а не с самими переменными (для этого ведь и существуют указатели и значки амперсанда, верно?). Кстати, еще непонятно, какая разница между указателями и "взятием адреса" через использование амперсанда (&)...

Давай попорядку smile
Программа не работает с адресами. Программа - это набор управляющих команд системе. Система, читая твою программу, будет в случае наличия команд управления адресами с ними и работать. Указатели изначально создавались для ускорения работы и оптимизации работы с ОЗУ. Попробую обьяснить на примере... у тебя есть класс Foo. Ты создал обьект Foo foo; Допустим класс Foo очень сложен и громоздок. Обьект foo занимает много памяти и поэтому в таком случае:
Код

void somefunc(Foo foo_clone)
{
//Делаем что-то страшное :)
}
//**********************
//Где-то в коде...
Foo foo;
somefunc(foo);

Приложение уйдет в лучшем случае в глубокий даун, а в худшем при нехватке памяти аварийно завершиться. Для не NT систем может также наблюдаться нарушение целостности памяти других процессов.
Почему это происходит ? на строчке somefunc(foo); система делает ещё одну копию foo и поэтому, при условии, что создание первого обьекта от Foo завершилось успешно, не факт, что памяти хватит под второй. Также в этом примере мы не можем изменить уникальный foo в функции somefunc. Максимум, что мы можем сделать - это изменить его клона.
Теперь пример, как бы можно сделать это правильно:
Код

void somefunc(Foo *lpfoo)
{
//Делаем что-то страшное :)
}
//**********************
//Где-то в коде...
Foo foo;
somefunc(&foo);

В этом примере, что наглядно, используется способ передачи параметра функции по ссылке.
В данном случае клон foo не создается, а работа ведется с единственным foo, вернее с указателем на обьект класса Foo, значение которого в результате работы строчки somefunc(&foo) будет адрес foo. В данном примере мы можем работать с уникальными членами foo. Допустим мы можем так изменить public член something(int): lpfoo->something = 1;

Ссылка - Адрес - Указатель... это вещи тесно взаимосвязанные в контексте C++. Адрес - это, если по простому - положение обьекта в памяти. Символ & обозначает взятие адреса. Указатель можно воспринимать, как тип способный хранить адреса на определенно типированную переменную. Указатель по сути не нужен будет, если он не ссылается на какой-то обьект памяти по определенному адресу. Чтобы узнать этот адрес, надо "взять адрес" - это логично.
PM MAIL ICQ Skype GTalk Jabber   Вверх
comcon1
Дата 5.8.2005, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: 12
Всего: 17



Это тот пример, который нужен. Стоит добавить, что в С это единственный способ передавать функциям переменные с тем, чтобы они изменялись внутри функции.
В С++ есть еще ссылки. Вот так с ссылкой тот же пример.
Код

void somefunc(Foo &foo_clone)
{
//Делаем что-то страшное :)
 foo_clone.do_horrible_things();
// обращаемся со ссылкой как с самой переменной
}
//**********************
//Где-то в коде...
Foo foo;
somefunc(foo);

Для таких целей как раз использовать удобнее ссылки.

Цитата

В этом примере, что наглядно, используется способ передачи параметра функции по ссылке.


Да. Тока слово ссылки стоит применять в контексте к ссылкам, а чтобы термины не путались - бери в кавычки.


--------------------
PM MAIL   Вверх
En_t_end
Дата 5.8.2005, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Цитата(comcon1 @ 5.8.2005, 15:49)
В С++ есть еще ссылки. Вот так с ссылкой тот же пример.

Цитата(comcon1 @ 5.8.2005, 15:49)
Да. Тока слово ссылки стоит применять в контексте к ссылкам, а чтобы термины не путались - бери в кавычки.

Угу моя ошибка, извиняюсь.
smile
PM MAIL ICQ Skype GTalk Jabber   Вверх
mr.Anderson
Дата 5.8.2005, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Цитата
В другом ревью оно highly recommended:

Неправильно. Это то же самое ревью, только о другой книге Дейтелов. Понятно? smile Посмотрите на названия книг, о которых пишут там. А внизу там есть список их литературы - какая рекомендована, а какая нет.
Добавлено @ 19:17
En_t_end, из вашего (кстати, вполне хорошего) объяснения я уяснил одно: лучше всегда пользоваться ссылками, а не указателями. Я все правильно понял? Что такое ссылка, я, в принципе, разобрался.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
En_t_end
Дата 6.8.2005, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



sim7

Цитата(sim7 @ 5.8.2005, 23:14)
учше всегда пользоваться ссылками, а не указателями. Я все правильно понял? Что такое ссылка, я, в принципе, разобрался.

Все зависет от конкретного примера. Допустим примение указателей - это пожалуй единств. выход в контексте C++ работать с кучей. Единственно удобный универсальный вариант работы с массивами в контексте функции при передачи его в виде параметра.
Код

void somefunc(char *strng) 
/*Самый удобный вариант, когда надо получать массив в качестве параметра */
{
//что-то делаем с strng.
}
//Где-то в коде...
char *some_pointer = new char[MAX_LONG_STR];
somefunc(some_pointer); //передаем дин. массив
char some_str[MAX_LONG_STR];
somefunc(some_str);  //передаем обычный массив


Это сообщение отредактировал(а) En_t_end - 6.8.2005, 10:49
PM MAIL ICQ Skype GTalk Jabber   Вверх
comcon1
Дата 6.8.2005, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: 12
Всего: 17



Работа со ссылками не столь разнообразна, сколь с указателями. Там много ограничений. Например список объектов не может быть реализован с помощью ссылок, ведь ссылкам должны передаваться реальные объекты.

+ указателей в том, что отведенная память сохраняется при удалении указателя, а, следовательно, она доступна из любой области видимости.
Однако это и является их минусом, потому что в кривых руках память забывают отводить и это приводит к утечкам (потере указателей на отведенную память).


--------------------
PM MAIL   Вверх
En_t_end
Дата 6.8.2005, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



comcon1

Цитата(comcon1 @ 6.8.2005, 15:44)
Однако это и является их минусом, потому что в кривых руках память забывают отводить

Я думаю это их минусом не является. Это является минусом обладателя кривых рук smile
PM MAIL ICQ Skype GTalk Jabber   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.