Изучение C из фона в C # - PullRequest
       2

Изучение C из фона в C #

9 голосов
/ 23 октября 2010

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

Теперь я считаю себя очень компетентным разработчиком C #, но C - это совершенно другой мир!

  • Нет пространств имен.
  • Без классов я не знаю, как структурировать свой код.
  • Я понимаю, заголовочные файлы и включает, но мое использование их кажется не совсем правильным.
  • Потеря (например) класса String - это культурный шок.

Кроме того, мне сложно отделить информацию о C ++ от информации о C (например, является ли snprintf только C ++?)

Это может показаться странным запросом, но есть ли хорошие руководства для изучения C, если у вас есть опыт работы на других языках?

Ответы [ 5 ]

4 голосов
/ 23 октября 2010

Не пытайтесь изучать C на книгах / веб-сайтах C ++. Начните с чего-то, нацеленного только на C. Отличное место - Язык программирования C . Это оригинальная и до сих пор одна из лучших книг по языку программирования.

Изучение C будет проблемой, потому что это другой тип языка. Это процедурный язык, а не объектно-ориентированный язык. Будет хорошо, если вы научитесь этому. Вы, вероятно, также узнаете намного больше о том, как работает ваша ОС, потому что она гораздо ближе к металлу.

Обратите внимание, что это гораздо менее сложный язык и, следовательно, не хватает многих тонкостей современного языка. Там нет BCL / .Net Framework. Как вы заметили, нет строкового класса (хотя есть строковые функции).

1 голос
/ 23 октября 2010

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

Взгляните на книгу Кернигана и Ричи или книгу Дейтеля и Дейтеля. Сначала они оба покажутся вам слишком элементарными, но в итоге вы получите более глубокое знание языка.

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

Надеюсь, это поможет!

0 голосов
/ 23 октября 2010
0 голосов
/ 23 октября 2010

C ++ - это расширенный набор C. Поэтому все, что вы можете делать в C, вы можете делать в C ++.

Я думаю, что это хорошая идея для изучения C. Это заставит вас иметь дело с памятьюи управление ресурсами, структурированное программирование и объектно-ориентированное, а также имеет гораздо меньшую стандартную библиотеку (по сравнению с C #).

0 голосов
/ 23 октября 2010

Я отвечу на ваш вопрос, но сначала: переход от C # к C подобен переходу от пластиковой зубной щетки к деревянной ... Я не вижу никаких преимуществ.

Итак:

Пространства имен - нет, их нет в C. Это особенность C ++ / C #. Вы должны быть в состоянии компенсировать с помощью префиксов. (Namespace_myClass).

Что касается занятий, я не знаю, как вам помочь. Я программист C ++ (не C), но C имеет структуру, хотя я не знаю, можете ли вы иметь функции-члены.

Заголовочные файлы и включения синтаксически одинаковы. Например:

#include <Windows.h>

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

А что мы будем делать без строки? Вы можете сделать свой собственный, или вы можете вручную управлять строками C (char *) с такими функциями C, как memcpy, ect ...

Прощай и удачи!

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