Недавно я проявил интерес к программированию на C, поэтому я взял себе книгу (K & R) и начал изучать.
Исходя из университетского курса по Java (основы), указатели - это совершенно новая глава, и изто, что я читаю в Интернете, это довольно сложная концепция, чтобы разобраться в этом.Перед тем, как перейти к главе, посвященной указателям, у меня сложилось впечатление, что указатели являются основной частью языка Си и обеспечивают большие преимущества.
После прочтения главы и получения базового представления о том, что такое указатели и как они работают, преимущества для меня не очевидны.
Например (пожалуйста, исправьте меня, если я все понял неправильно) во введении указателей в книге K & R говорится, что, поскольку мы вызываем по значению, при передаче переменной в вызове функции мы в значительной степени передаем копию переменной для обработки функции, и поэтому функция не может ничего делатьк исходной переменной, и мы можем преодолеть это с помощью указателей.
В более позднем примере, в котором используется указатель на символ, в книге говорится, что увеличение указателя на символ допустимо, поскольку функция имеет частную копию указателя.Не являются ли «личные копии» причиной для использования указателей?
Полагаю, я немного запутался во всем использовании указателей.Если меня спросят, я могу использовать указатели вместо подписок на массив, например, но я сомневаюсь, что это основное использование указателей.
Программирование на Linux и Open source было основной причиной, по которой я попал в C. Я получил исходный кодиз проекта C для изучения (Geany IDE), и я вижу, что по всему исходному коду используются указатели.
Я также немного поискал по форумам и нашел пару постов с похожими вопросами.Ответ был (я цитирую):
Если вы не знаете, когда следует использовать указатели, просто не используйте их.
Это станеточевидно, когда вам нужно их использовать, каждая ситуация отличается.
Безопасно ли для меня избегать использования указателей в настоящее время и использовать их только в определенных ситуациях (где потребность в указателях будеточевидно?)