Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Зачем нужны указатели С++?

Ответить
Настройки темы
Зачем нужны указатели С++?

Аватара для Guest

Guest



Профиль | Цитировать


Мы сейчас их изучаем, я понимаю ка кими пользоватся но вот одного понять не могу - зачем они нужны? То есть покажите пример где указатели использовать более эффективно или вобще без них не обойтись? Заранеее спасибо за любую помощь!

Отправлено: 18:19, 03-05-2004

 

Пользователь


Сообщения: 95
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Например у тебя есть массив символов, и есть указатель, который указывает на этот массив...
т.е. массив - просто переменная
указатель - место в памяти
записывать информацию нужно соответственно не в переменную а в память (указатель)...
это как пример

[s]Исправлено: suxxl, 0:07 4-05-2004[/s]

-------
Вся наша жизнь - игра.... вот только б не повисла...


Отправлено: 22:04, 03-05-2004 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для bgg0408

Модер Железа


Сообщения: 1557
Благодарности: 3

Профиль | Сайт | Отправить PM | Цитировать


Guest
Указатели в Си были введены для более удобной работы с массивами. Так, к примеру, имя массива - (константный) указатель на его первый элемент. А теперь представьте, что массив не статический, а динамический...

-------
FreeBSD - forever


Отправлено: 23:05, 03-05-2004 | #3

Lexxuss


Сообщения: n/a

Профиль | Цитировать


В си функция может вернуть только одно определенное значение. К примеру, если тебе нужно вернуть массив данных, нельязя написать return a[N], но ты можешь вернуть указатель на этот массив. Здеся без указателей никуда *
* * * *

Отправлено: 21:07, 05-05-2004 | #4


Аватара для bgg0408

Модер Железа


Сообщения: 1557
Благодарности: 3

Профиль | Сайт | Отправить PM | Цитировать


Развлекался нынче так:
Цитата:
//Generate a NAN(Not A Number)
double a;
((int *)&a)[0]=0xffffffff;
((int *)&a)[1]=0xffffffff;
Догадайтесь,  что этот год делает

-------
FreeBSD - forever


Отправлено: 18:36, 06-05-2004 | #5


Аватара для Dimon

Ветеран


Сообщения: 551
Благодарности: 13

Профиль | Отправить PM | Цитировать


bgg0408
Ну ты завернул! Где такую траву берешь?
Без компилятора: производится преобразование адреса А в инт, а затем по этому адресу кладется значение? Хотя массив...
Блин, аж голова разболелась - давно на Сях писал... Нельзя так людей мучать

-------
Патроны кончаются... Санитары близко... Всем пока


Отправлено: 20:17, 06-05-2004 | #6


Аватара для Ginger

Рыжая


Сообщения: 1550
Благодарности: 19

Профиль | Сайт | Отправить PM | Цитировать


нифига не делает
не компилится даже
(JFE nad GCC C/C++ compiler)

-------
ХР, 2000, NT - BSOD (синие экраны смерти) русский перевод


Отправлено: 21:00, 06-05-2004 | #7


Аватара для bgg0408

Модер Железа


Сообщения: 1557
Благодарности: 3

Профиль | Сайт | Отправить PM | Цитировать


Ginder
Цитата:
нифига не делает
не компилится даже
(JFE nad GCC C/C++ compiler)
Все путем! Я юзал VC.NET, хотя стандарт языка ДОЛЖЕН такой наворот поддерживать!
А ты в main этот код добавила?


Цитата:
Ну ты завернул! *Где такую траву берешь?
Спасибо! Это я сам такое генерю!!!
Смысл кода в том, что я обращаюсь к переменной double, как массиву 2-х int'ов(чтобы по 4 байта), затем чтобы сгенерировать NAN, выставим все поля double вручную, т.к. компилятор не позволяет сгенерировать это чудесное число напрямую. Он его не знает
Есть еще один способ получить NAN:
Цитата:
double a,b,c;
a=0; b=0;
c=a/b; // NAN - нечисло
a=1; b=0;
c=a/b; //+infinity - плюсовая бесконечнось
a=-1; b=0;
c=a/b; //-infinity



[s]Исправлено: bgg0408, 23:36 6-05-2004[/s]

-------
FreeBSD - forever


Отправлено: 23:30, 06-05-2004 | #8


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


bgg0408
Код: Выделить весь код
float getNaNQ () 
{ 
  unsigned long num = 0xffffffffUL; 
  return *(float*)# 
} 
 
int isNaNQorInf (float num_) 
{ 
  float num = num_; 
  return ((*(long *)&num & 0x7f800000L) == 0x7f800000L); 
} 
 
int isInf (float num_) 
{ 
  float num = num_; 
  return (((*(long *)&num & 0x7f800000L) == 0x7f800000L) && \ 
          ((*(long *)&num & 0x007fffffL) == 0x00000000L)); 
} 
 
isNaNQ (float num_) 
{ 
  float num = num_; 
  return (((*(long *)&num & 0x7f800000L) == 0x7f800000L) && \ 
          ((*(long *)&num & 0x007fffffL) != 0x00000000L)); 
}

Отправлено: 08:39, 07-05-2004 | #9


Аватара для bgg0408

Модер Железа


Сообщения: 1557
Благодарности: 3

Профиль | Сайт | Отправить PM | Цитировать


hasherfrog
Крут, крут Ничего не скажешь :D Замечу: и всё указатели как-то используются

-------
FreeBSD - forever


Отправлено: 23:31, 07-05-2004 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Зачем нужны указатели С++?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Зачем нужны торрент сайты? firedevil Хочу все знать 22 03-06-2009 11:32
Разное - [решено] Зачем нужны DVD Fab Platinum и PDF-X Changes firedevil Хочу все знать 1 09-09-2008 19:59
Delphi - зачем DCC32.EXE нужны system.pas, sysinit.pas, *.dpr ? akrav Программирование и базы данных 4 12-05-2008 14:25
Зачем нужны архиваторы? Bass666 Хочу все знать 11 19-10-2006 21:16
Зачем нужны заплатки? 9628 Хочу все знать 16 06-01-2006 22:21




 
Переход