Учим Си: работа с указателями

Xakep, номер #033, стр. 033-052-1

Денис Мысенко (denis@mysenko.com)

Так, народ. Хватит халявничать, юзать чужие скрипты и эксплоиты, начинаем кодить сами. Если тебе кажется, что владеть языком - означает доставлять подруге удовольствие, то ты сильно ошибаешься, речь пойдет о вещи гораздо более сложной и сухой. Ты предпочитаешь Visual Basic? Удаляй как можно быстрее! Давно известно, что хакерский язык программирования - Си. Да, конечно, Дельфи тоже неплох, особенно для начинающих. И мы не зря описываем именно его в рубрике Кодинг. Но после того (а лучше во время), как ты научишься кодить на Дельфях, тебе обязательно нужно изучить Си. Особенно это касается тех, кто хочет предложить свою руку и голову Линуксу, т.к. все экплойты под *nix пишутся именно на Си.

Для озабоченных историей: язык Си выдуман в конторе Bell Labs в США, а сам компилятор (сборщик запускных файлов из сорцов; сорцы (sources) - исходники) Си написан, соответственно, на языке Си (то есть на самом себе), что делает его особенно компактным и переносимым. Итак, приступим к описанию языка.

Типы данных

Под типами подразумеваются не братки, а виды какой-либо инфы, которую мы крутим в руках в процессе выполнения программы. Это могут быть цифры, буквы, слова (в том числе и матерные). Объявляются переменные в начале (в самом-самом начале) какой-нибудь из функций и юзаются, соответственно, в ней. Выглядит это так:

int ciferka, eshe_ciferka, i_eshe_ciferka;

char bukovka, eshe_bukovka, gy_gy;

char[20] materki;

Первое слово говорит о типе инфы, которая будет содержаться в переменной, затем идет перечисление (через запятую) имен, сколько переменных - столько и имен. Имя можешь делать какое угодно, лишь бы не с цифры начиналось и без всяких там минусов, т.е. юзай только английские буквы, цифры и знаки подчеркивания!

Типы могут быть следующие:

int - циферка

long int - бооольшая циферка

unsigned int - циферка, всегда положительная

void - пустышка, просто ничего

float - циферка с запятой

double - бооольшая циферка с запятой

char - символ, один символ!

char[X] - слово из X символов

Это, конечно, не все, но тебе для начала хватит :). Когда ты объявляешь все эти фишки, твоя программа, запустившись, будет под каждую забивать место в памяти, а если какая-то переменная останется неюзанной - компилятор при сборке начнет плакать.

Структура программы

Анатомия у программы на Cи простая - это просто куча органов, то есть функций - мелких подпрограмм, никаких процедур и прочих аналов как таковых нет. Половым органом служит функция main, и если твой половой орган можно назвать тридцатью тремя грубыми и не очень словами, то в Си - это всегда main. С этой подпроги начинается запуск основной программы и только с нее, а что там дальше будет - дело твое. Кстати, function`ы возвращают какие-то значения, то есть после завершения они отдают какую-либо инфу функции, которая ее вызвала. Т.е. подпрограммку можно рассматривать как переменную, которая как-то хитро рассчитывается. Таким образом, получаем следующий скелет:

void main ()

{

int blabla;

char zlo;

blabla = 5;

zlo = 'A';

Содержание  Вперед на стр. 033-052-2

ttfb: 2.4938583374023 ms