Насколько важно знание указателей? - PullRequest
0 голосов
/ 16 июня 2009

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

Ответы [ 11 ]

17 голосов
/ 16 июня 2009

По шкале от 1 до 10, около 12. Это важная часть языка и еще более важная часть компилятора.

15 голосов
/ 16 июня 2009

Это действительно очень важно, чтобы вы полностью понимали указатели, особенно при работе в C (или C ++). Так много вещей сводится к манипулированию указателями и памятью, и есть много «хитростей», связанных с указателями, которые могут возникнуть при разработке компилятора в C.
«Хорошие книги» на самом деле не помогут вам, это просто концепция, которая вам нужна, чтобы обдумать свою идею.
Google для учебников указателя в сети, и работайте через них, пока это не щелкает. Например: http://home.netcom.com/~tjensen/ptr/pointers.htm

10 голосов
/ 16 июня 2009

Это критически важно.

9 голосов
/ 16 июня 2009

Это довольно просто. Если вы этого не знаете, вы далеки от написания компилятора на C, поскольку это все о динамических структурах (деревьях) и операциях над ними.

Синтаксический анализ обычно дает дерево, которое иногда преобразуется в другое дерево после семантического анализа, затем модифицируется (например, оптимизация), а затем записывается в более линейный формат (IL или что-то, что на один шаг выше метки-ассемблера)

3 голосов
/ 16 июня 2009

Автор компилятора должен знать об указателях, поскольку он или он будет проектировать машину для преобразования языка высокого уровня, такого как c или pascal или perl, в ассемблерный код или машинный код.

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

Все это удобно для пользователя вашего компилятора.

2 голосов
/ 16 июня 2009

Это очень важно. Я начал разрабатывать (C, C ++, а теперь и Objective-C) без каких-либо знаний и, конечно, без терпения читать об указателях. Работа с ними заставила меня осознать основы, но это было все.

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

Также хорошо разбирайтесь в сборке мусора или сохраняйте счетчики (malloc, dealloc, new и т. Д. И т. Д.). Освобождение и создание объектов в нужное время очень и очень важно и тесно связано с указателями.

1 голос
/ 16 июня 2009

Вам действительно нужно разобраться с указателями, чтобы успешно программировать на C. Без них вы не сможете должным образом управлять управлением памятью, реализовывать самые продвинутые структуры данных и практически любые другие средства управления ресурсами. У вас также будут проблемы с массивами (так как они могут и при определенных обстоятельствах ухудшатся до указателей), поэтому я боюсь, что вам придется научиться правильно их использовать.

1 голос
/ 16 июня 2009

в С? Строки представлены в виде указателей (на последовательности с нулевым символом в конце). Некоторые стандартные библиотечные функции имеют указатели на другие функции (qsort). Нет необходимости писать свой собственный связанный список или реализацию двоичного дерева, но каждый из них будет использовать указатели и ожидать, что вы их поймете.

Кроме того, если вы хотите поместить что-то, кроме стека, вам нужно использовать указатели. Обычно вы открываете файлы и получаете «указатель файла», который представляет собой структуру, с которой вы взаимодействуете как указатель.

И затем, если вы намереваетесь скомпилировать язык, в котором есть указатели, ...

В целом, это то, без чего вы просто не можете обойтись.

1 голос
/ 16 июня 2009

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

В качестве примера я не знаю, как объяснить, почему вы должны использовать StringBuilder вместо строки при объединении большого количества строк, не произнося слово указатель:).

0 голосов
/ 16 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...