Вопрос № 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 сайта. С максимально понятными коментами на русском.
Там вроде какие-то сокеты или ещё что, я вообще в сетевом программирование не разбираюсь. Что нужно инклудить, вобщем от и до.
Ответ отправил: 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
Какой максимальный размер двумерного масива? Сколько на сколько? Какой тип данных?
Отвечает: 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