Задать вопрос

Помощь с программированием на Си

Всем привет. Ввязался в такую ситуацию, что хочу учить Си, прикладываю усилия, но немного не понимаю. К примеру, учил на www.cprogramming.com (англ.туторы), вроде всё понятно, но как дошло до указателей — ничего не понимаю. Про массивы даже не стоит говорить. А что-то типа if, else if, else понимаю нормально. Первым делом и читал книгу Денниса Ритчи «Язык программирования C», но там, по-моему для новичка всё очень и очень сложно. На первой минуте прочтения всё доходит до цикла for и while. Так вот, я уже и не знаю что делать, думаю, может идти на курсы? Кто что может посоветовать? Может книгу для совсем «чайников»? Ранее учил HTML&CSS, таких сложностей как с Си не возникало.
  • Вопрос задан
  • 6523 просмотра
Подписаться 11 Оценить Комментировать
Решения вопроса 1
hell0w0rd
@hell0w0rd
Просто разработчик
Для начала вам нужно понять, что работа с указателями и переменными в целом — просто достаточно удобная форма работа с памятью. Дальше сравните память с чем-то существующим в реальности — на пример поле. Переменные — крестьяне, разбивающие поле на куски. Дальше станет существенно проще.
Да и прежде чем переходить к указателям — точно разобрались с статическими массивами и переменными?
Я си мало учил, почти сразу перешел на плюсы, в этом мануале в принципе первая часть общая для этих языков — shatalov.su/ru/articles/step_by_step.php, возможно вам поможет.
По поводу же циклов(while, for, do-while) — они на самом одно и то же.
Главное — условие выхода из цикла. Оно всегда сводится к true/false. for и do while — это можно сказать синтаксический сахар, можно обойтись и без него.
И главное — практика. Без практики — никуда. Вы учили html и css — подумайте, неужели можно понять что такое float и position — не попробовав?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 10
lSDriim
@lSDriim
Embedded программист
А я бы посоветовал перечитывать Денниса Ритчи «Язык программирования C» до полного просветления, если какой-то отдельный пункт непонятен, его гуглить. Т.к. в свое время именно благодаря этой книги я понял все про массивы и указатели.
Ответ написан
Комментировать
Suvitruf
@Suvitruf
Java/node.js/game-dev
Могу лишь посоветовать начать с C# — учить его проще, для прикладных задач удобнее, указателей нет(точнее есть, но они обычно не нужны), начать писать на С после него проблемы не составит.

Вот я бы не советовал начинать с C#.

Курсы тоже весьма сомнительно, ибо обычно там ни чему не учат, лишь корочку в итоге дают.

Не буду первооткрывателем, посоветовал бы Страуструпа почитать)

p.s. для чего вам это?
Ответ написан
zloiia
@zloiia
руконог
А можно уточнить, для каких целей изучаете?
Ответ написан
@vilgeforce
Раздолбай и программист
Указатели я хорошо в свое время понял только после того как программу в отладчике на уровне ассемблерных команд посмотрел. Потом вопросов не возникало.
Ответ написан
Комментировать
kasthack
@kasthack
>но там, по-моему для новичка всё очень и очень сложно. На первой минуте прочтения всё доходит до цикла for и while.
Циклы — основа всего программмирования. Книга предполагает, что вы уже на чём-то пишете.
>Ранее учил HTML&CSS, таких сложностей как с Си не возникало.
Не языки программирования же.

Погу лишь посоветовать начать с C# — учить его проще, для прикладных задач удобнее, указателей нет(точнее есть, но они обычно не нужны), начать писать на С после него проблемы не составит.
Ответ написан
Комментировать
@rPman
Учить начиная с Си не советую, начинайте с простого, лучше спускаться вниз с верхов: JavaScript -> Java или C# -> C++ -> C (такая иерархия слишком образная и холиварная, но сойдет).

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

При обучении именно Си без понимания более высоких языков программирования поставит в тупик то, как и что в нем реализуют другие программисты, дело в том что в библиотеках очень старательно реализуют вкусности, которые появились позже в более высокоуровневых языках, и делают это ограниченными средствами языка — например на макросах (язык над языком — предпроцессор), и пытаться понять даже самые простые конструкции будет очень сложно.
Ответ написан
@nzim
Насчет С не подскажу, но есть замечательные лекции от Лекториум по основам C++, первый семестр . Там частенько проскакивают сравнения с Си. Еще есть 2й семестр.
Ответ написан
Комментировать
@egorinsk
Я думаю, что вам просто нужна другая книга по Си, более подробная и терпеливая.

Насчет указателей — а вы почитайте, как работает процессор, как устроена оперативная память (RAM), и как в ней хранятся байты, числа и строки. Указатель — это просто адрес ячейки в памяти, и разобравшись с устройством памяти, вам надеюсь, все станет понятно. Язык Си находится на очень близком к железу (CPU и RAM) уровню.

Хотя, если ваша цель Objective-C, наверно, указатели не так и важны.
Ответ написан
Комментировать
@realduke
Вроде единственная нормальная книга по Objective C — это Programming in Objective-C, если конечная цель применять этот язык, то лучше с него и начать.

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

Programming in C, автор тот же, что и у первой книги.

C Programming: A Modern Approach

Еще можете глянуть на книгу Learn C The Hard Way от Zed Shaw, она доступна онлайн.

Удачи в изучении!
Ответ написан
Комментировать
@cthulhudx
У O'Relly есть хорошая книга "Изучаем Си", рекомендую к прочтению!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы