Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 653
от 30.01.2007, 22:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 466, Экспертов: 68
В номере:Вопросов: 6, Ответов: 14


Вопрос № 72504: Скажите где можно найти ресурс по OpenGL...
Вопрос № 72536: Здравствуйте! Пожалуйста приведите рабочую функцию (visual c 6) для скачивания файла / страницы с web сайта. С максимально понятными коментами на русском. Там вроде какие-то сокеты или ещё что, я вообще в сетевом программирование не...
Вопрос № 72557: Подскажите пожалуйста ссылки на электронные книги или статьи по разработке драйверов для Windows XP....
Вопрос № 72621: Ув. эксперты подскажите пожалуйста где скачать Visual Studio 2005 (желательно free). Кинте ссылочки. Заранее благодарю. ...
Вопрос № 72651: Какой максимальный размер двумерного масива? Сколько на сколько? Какой тип данных?...
Вопрос № 72655: Здравствуйте эксперты!Скажите для чего нужны указатели в C++ ,какую функцию они выполняют? (я начинающий)...

Вопрос № 72.504
Скажите где можно найти ресурс по OpenGL
Отправлен: 24.01.2007, 22:32
Вопрос задал: Hunter20 (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: ramok
Здравствуйте, Hunter20!

http://www.opengl.org.ru/

http://ru.wikipedia.org/wiki/OpenGL
много ссылок тут
Ответ отправил: ramok (статус: Студент)
Ответ отправлен: 25.01.2007, 01:00
Оценка за ответ: 5

Отвечает: Ross
Здравствуйте, Hunter20!

Да сколько угодно:
nehe.gamedev.net - уроки OpenGL от NeHe
http://pmg.org.ru/nehe/index.html - то же самое на русском языке
http://opengl.org.ru/books/open_gl/ - пособие для начинающих от Игоря Тарасова
http://www.progz.ru/articles.php?issue=5 - переводы глав из RedBook
Ответ отправил: Ross (статус: 4-ый класс)
Ответ отправлен: 25.01.2007, 01:11
Оценка за ответ: 5

Отвечает: Thread
Здравствуйте, Hunter20!
http://www.opengl.org.ru/
http://www.o-gl.ru/
А вообще http://www.google.ru/ выдает достаточно много ссылок на запрос OpenGL;)
Ответ отправил: Thread (статус: 2-ой класс)
Ответ отправлен: 25.01.2007, 09:41
Оценка за ответ: 5


Вопрос № 72.536
Здравствуйте!

Пожалуйста приведите рабочую функцию (visual c 6) для скачивания файла / страницы с web сайта. С максимально понятными коментами на русском.

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

например основа:

etPage (server, local, var_post, save_path)
{ }
Отправлен: 25.01.2007, 03:09
Вопрос задал: Талипов А Н (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: ramok
Здравствуйте, Талипов А Н!

http://www.rsdn.ru/article/inet/wininet.xml
http://forum.vingrad.ru/s/ecd8c8ecbb920ae0683e567a2a1aebc5/topic-130819/0.html#

ps
ни добавить, ни отнять Ж:-)
Ответ отправил: ramok (статус: Студент)
Ответ отправлен: 25.01.2007, 14:44
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Попытаюсь разобраться и чего-нибуд сделать. Похоже это то что нужно.


Вопрос № 72.557
Подскажите пожалуйста ссылки на электронные книги или статьи по разработке драйверов для Windows XP.
Отправлен: 25.01.2007, 09:58
Вопрос задал: Wild_one (статус: 5-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mihasic
Здравствуйте, Wild_one!
Самому драйверы никогда писать не приходилось, поэтому многим помочь не могу. Касательно книг - видел что-то здесь:
http://club.shelek.com/viewfiles.php?id=9
И статьи там же:
http://club.shelek.com/view.php?id=19
Ответ отправил: Mihasic (статус: 9-ый класс)
Ответ отправлен: 25.01.2007, 11:39

Отвечает: Рязанов Максим Валерьевич
Здравствуйте, Wild_one!
1.[Assembler для DOS, Windows и UNIX(Зубков)]
http://rapidshare.de/files/36327576/001402.rar.html - Поможет понять принцип работы драйверов.
2.[Программирование драйверов и систем безопасности(Сорокина)]
http://rapidshare.de/files/8019385/sorokina_programmirovanie_draiverov_sistem_bezopasnosti_djvu.rar.html - Рассматриваются вопросы создания различных драйверов уровня ядра ОС Windows
3.[Программирование драйверов Windows(Солдатов)]
http://rapidshare.de/files/7575029/soldatov._natahaus.ru_.chm.zip.html - Книга представляет собой систематизированное введение в программирование драйверов Windows 2000/XP/Server 2003 и Windows 98/Ме с использованием Microsoft Windows DDK
4.Есть статейка о написании драйвера на C++ здесь: http://www.wasm.ru/print.php?article=keusermodecallback
5.Документ "Написание драйвера для Windows NT": http://www.sdteam.com/texts/37/1282.zip
Ответ отправил: Рязанов Максим Валерьевич (статус: 1-ый класс)
Ответ отправлен: 25.01.2007, 13:13
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Именно это искал.


Вопрос № 72.621
Ув. эксперты подскажите пожалуйста где скачать Visual Studio 2005 (желательно free). Кинте ссылочки.
Заранее благодарю.
Отправлен: 25.01.2007, 18:12
Вопрос задал: Nightm@re (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Thread
Здравствуйте, Nightm@re!
MS бесплатно выложили на своем сервере Express версию. На мой взгяд ее вполне достаточно для обучения и небольших проектов. Скачать Visual C++ 2005 Express Edition можно вот отсюда: http://msdn.microsoft.com/vstudio/express/visualc/download/. Вообще для обучения можно использовать и более продвинутые версии, например в моем университете (МГТУ им. Баумана) можно бесплатно получить Visual Studio 2005 Professional по лицензии MSDN AA (Academic Aliance). На свой страх и риск можете скачать пиратскую копию из торрента с помощью программы uTorrent, скачать можете отсюда - http://www.utorrent.com/download.php
Ответ отправил: Thread (статус: 2-ой класс)
Ответ отправлен: 25.01.2007, 19:53
Оценка за ответ: 4
Комментарий оценки:
спасибо за указанное направление


Вопрос № 72.651
Какой максимальный размер двумерного масива? Сколько на сколько? Какой тип данных?
Отправлен: 25.01.2007, 21:20
Вопрос задал: Костенко Игорь Викторович (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: ramok
Здравствуйте, Костенко Игорь Викторович!

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

например вычислить сколько занимает массив char a[10][20]
зная что sizeof(char) == 1, то размер вычиляется так

размер массива в байтах = 10*20*1

сейчас в современных ОС, я думаю, ограничение по размеру в пределах 2х-3х гигабайт.
Ответ отправил: ramok (статус: Студент)
Ответ отправлен: 25.01.2007, 21:30

Отвечает: Tek
Здравствуйте, Костенко Игорь Викторович!
Если массив создаете в куче (с помощью new например) - то ограничен только объемом доступной памяти для просецца (в идеале 2^32 ~4 ГБ)
А вот на стек (в виде заданного определенного например int a[100][20]) - зависит от расмера стека (его если не ошибаюсь можно опциями компилятора менять)
---------
WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 8-ой класс)
Ответ отправлен: 26.01.2007, 08:56
Оценка за ответ: 5


Вопрос № 72.655
Здравствуйте эксперты!Скажите для чего нужны указатели в C++ ,какую функцию они выполняют?
(я начинающий)
Отправлен: 25.01.2007, 22:04
Вопрос задал: Hunter20 (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Рязанов Максим Валерьевич
Здравствуйте, Hunter20!
Указатель в C++ служит для хранения адреса объекта.
Существует также специальная операция взятия адреса, обозначаемая символом &.
Ее результатом является адрес объекта.

Приложение:

Ответ отправил: Рязанов Максим Валерьевич (статус: 1-ый класс)
Ответ отправлен: 25.01.2007, 22:37
Оценка за ответ: 4
Комментарий оценки:
возможно я чего то не понимаю
но почему не использовать обычные переменные как в Pascal или всё дело в эффективном использовании памяти?

Отвечает: ramok
Здравствуйте, Hunter20!

указатели удобны и эффективны при работе с массивами и структурами/классами.
самый очевидный пример это передача в фунцию как параметр:
void f(char *b)
{
*b = 1;
b[1] = 2;
}

char a[100000];
int main()
{
f(a);
return 0;
}

в этом примере при передаче массива внутрь фунции не делается копия всего большого массива, а передается только указатель на его начало. что несомненно быстрее чем создавать копию 100000 элементов Ж:-) (к слову сказать в С++ вам и не удастся передать
массив внуть фунции по значению, но это просто как пример).

более сложный, но уже вполне реальный пример вот:
class A
{
public:
char a[100000];
};

void f1(A *b)
{
*(b->a) = 1;
b->a[1] = 2;
}

void f2(A b)
{
*(b.a) = 1;
b.a[1] = 2;
}

A aa;
int main()
{
f1(&aa);
f2(aa);
return 0;
}

в фунции f1 будет передан только указатель на объект класса.
а фунции f2 будет сделана копия класса и передана внутрь фунции. тоесть будет скопировано как минимум 100000 байт. что скажется и на скорости и на кол-ве оперативной памяти занимаемой программой.

примеры притянуты зауши, но только что бы было выразительнее. вообще рассказывать и рассуждать можно много, но думаю со временем вас станет очевидно удобство указателей в некоторых случаях. в C++ без них никак.

хотя указатели это палка о двух концах. если ошибится с адресом в указателе, то программа поведет себя не предсказуемо. в некоторых языках программирования(java, C#...) намеренно отказываются от указателей.
Ответ отправил: ramok (статус: Студент)
Ответ отправлен: 25.01.2007, 23:10
Оценка за ответ: 4
Комментарий оценки:
скажите а вот такой вариант для первой функции что-нибудь изменит?

Отвечает: Mitya86
Здравствуйте, Hunter20!

указатель - это адрес ячейки памяти, которая может содержать какое-либо значение.
не все указатели одинаковы. например если указатель указывает(прости за тафтологию) на значение типа int, то это означает что он адресует область памяти размером 4 байта, если на значение типа char - то 1 байт.
указатели могут указывать на значения как встроенных типов данных, так и на значения тип которых определен пользователем(например на объекты классов).
указатели используют для передачи данных в функции. например нам нужно передать в какую-либо функцию массив содержащий миллион элементов. если мы будем передавать по значению, это будет означать что во время выполнения программы в момент передачи будет создан такой же массив, что не есть хорошо, поскольку занимает много памяти. можно поступить проще - передав указатель на первый элемент массива.
так же наличие указателей позволяет реализовать один из принципов объектно-ориентированного программирования - полиморфизм.
вот в кратце и все. а вообще лучше читай страуструпа.
удачи.
Ответ отправил: Mitya86 (статус: 2-ой класс)
Ответ отправлен: 26.01.2007, 00:04
Оценка за ответ: 4

Отвечает: Torsten
Здравствуйте, Hunter20!
Не пытайтесь понять это сходу - это невозможно.
Я около двух месяцев ходил и не понимал для чего они нужны, а потом ... осознание само пришло.

Для программирования на С/С++ понимания указателя одно из главных. С помощью него можно творить такое, что ни на одном другом языке сделать нельзя, и при этом это будет красиво и очень быстро. Во многом так же зависит от креатива программиста, ведь с помощью указателей появляются большое разнообразие в алгоритмах, которые будут не переносимы на другие языки, за исключением разве что ассемблера.

Я честно скажу, я не знаю как обьяснить новичку что такое указатель. Я кстати вначале думал именно так же как и вы, нафига мне этот указатель, а толку от него ?
Почему обычные переменные нельзя вместо него использовать ?

Вот, единственное только что скажу смотрите в сторону динамических структур данных, например, массивов. Динамическое выделение и освобождение памяти.
---------
#define MAGIC_NUMBER 0xdeface
Ответ отправил: Torsten (статус: 4-ый класс)
Ответ отправлен: 26.01.2007, 02:41
Оценка за ответ: 5

Отвечает: Thread
Здравствуйте, Hunter20!
Указатель это переменная, которая содержит в себе адрес другой переменной. Несколько указателей могут указывать на один объект. Вот пример:
int *a; - объявляем пременную, которая содержит в себе адрес (указывает)некоторой переменной в памяти типа int.
стоит заметить, что после такого объявления a никуда конкретно указывает, т.е. BadPtr, и при попытке ее использовать вылезет ошибка. Если указатель это адрес, то логичен вопрос как получить какой-то адрес. Для этого служит оператор &. Пример: пусть есть переменная b:
int b = 4;
и есть указатель a:
int *a;
теперь присвоим a адресс b:
a = &b;
А теперь об использовании. Что бы обратиться к значению нужно использовать разименование. Деллается это добавлением *. Т.е. a - это адресс, *a - то что по этому адресу находиться.
int b = 4;
int *a = &b;
*a = 3;//Теперь хначение b равно 3.
Можно также выделить одну или несколько ячеек и взять адрес первой выделенной ячейки. Для это есть оператор new (стоит заметить, что он есть только в С++, в С его нету).
int *a = new int[3];//выделяем три ячейки типа int, оператор new возвращает адресс первой из них.
Далее важный момент это адресная арифметика. Пусть а - это указатель, тогда а + 1 это тоже адрес, но следующей ячейки. a++ здесь указатель сдвигается на одно значение. Важный момент: *(a + 2),это тоже самое, что и a[2], т.е. мы можем работать с группой выделенных ячеек как с массивом. После завершения работы с указателем его нужно удалить с помощью delete. Например так: delete a;
Ответ отправил: Thread (статус: 2-ой класс)
Ответ отправлен: 26.01.2007, 15:16
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.43 beta от 26.01.2007
Яндекс Rambler's Top100

В избранное