Форум программистов, компьютерный форум CyberForum.ru

Стоит ли изучить программирование в стиле С? - C++

Восстановить пароль Регистрация
 
 
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
14.05.2014, 10:00     Стоит ли изучить программирование в стиле С? #1
Стоит ли изучит программирование в стиле С?
В книге написано про строки в стиле С и настоятельно рекомендуется не использовать их при программирование. Так как я не хочу нагрузит себя не нужной информацией ( ибо за краткий срок много чего надо изучит), возникает вопрос.
На столько актуальны сроки в стиле С? Надо ли изучать их или можно пропустит?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2014, 10:00     Стоит ли изучить программирование в стиле С?
Посмотрите здесь:

C++ решил изучить с++
Хочу изучить C++ C++
2 изучить работу с массивом C++
Gnu Octave написана на C++, хочу изучить программирование для Octave, с чего начать C++
C++ Какие книги лучше всего изучить чтобы хорошо изучить с++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
14.05.2014, 10:14     Стоит ли изучить программирование в стиле С? #2
Цитата Сообщение от Altair42 Посмотреть сообщение
я не хочу нагрузит себя не нужной информацией ... Надо ли изучать их или можно пропустит?
Конечно можно пропустить. Без лишней информации.
Убежденный
Системный программист
 Аватар для Убежденный
14200 / 6215 / 986
Регистрация: 02.05.2013
Сообщений: 10,356
Завершенные тесты: 1
14.05.2014, 21:21     Стоит ли изучить программирование в стиле С? #3
Цитата Сообщение от Altair42 Посмотреть сообщение
На столько актуальны сроки в стиле С? Надо ли изучать их или можно пропустит?
А что там изучать ? Вот строка из символов, вот завершающий ноль в конце.
Если вы принимаете строку в N символов, то должны выделить N+1 места в
буфере, чтобы не было переполнения. Если память под буфер выделяется в
динамической памяти, за ней нужно следить и освобождать, когда она
больше не нужна. Вот и вся наука.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
14.05.2014, 21:21     Стоит ли изучить программирование в стиле С? #4
Цитата Сообщение от Убежденный Посмотреть сообщение
Вот и вся наука.
другими словами обыкновенная работа с массивом, не более
oxyfat
 Аватар для oxyfat
65 / 62 / 11
Регистрация: 01.05.2014
Сообщений: 247
14.05.2014, 21:32     Стоит ли изучить программирование в стиле С? #5
Приветствую!
( "Убеждённому" - Большое Спасибо ( за - ? Не знаю, но Полезные "Вещи" открылись ! )
- с моей точки зрения: - Если Вы задумываетесь о программировании - только с Точки зрения Друзей;
- ( - ух, ну-надо-же...) - прочее...
-- Ни надо.
--- (идите варить Метал - проку будет больше )
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
15.05.2014, 02:44  [ТС]     Стоит ли изучить программирование в стиле С? #6
Убежденный, советую к прочтению прежде чем ответит на такой вопрос.

Язык программирования C ++_Вводный курс Стенли Б. Липпман.
Стр 154.
Символная строка в стиле С.

Это очень отличается от обычного массива которого вы описали. (Кроме нолика)

Добавлено через 2 минуты
В принципе строка в стиле С тот же самый массив но в языке С. Хотя бы посмотрите раздел где создана тема.
RamonN
 Аватар для RamonN
32 / 32 / 11
Регистрация: 13.07.2011
Сообщений: 136
15.05.2014, 02:52     Стоит ли изучить программирование в стиле С? #7
Altair42, А чем вам не устраивает ответ Убежденный, все правильно он написал: строка в стиле С это обычный массив лишь с нулем-терминатором в конце.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
15.05.2014, 04:54     Стоит ли изучить программирование в стиле С? #8
Убежденный, вот так лихо взяли и послали Вас в книжки для начинаюших)
Цитата Сообщение от Altair42 Посмотреть сообщение
Это очень отличается от обычного массива
И чем же? Я даже не поленился - книжку открыл. Там написано то же самое, только с примерами и занимает 5 страниц.
Убежденный
Системный программист
 Аватар для Убежденный
14200 / 6215 / 986
Регистрация: 02.05.2013
Сообщений: 10,356
Завершенные тесты: 1
15.05.2014, 19:52     Стоит ли изучить программирование в стиле С? #9
Цитата Сообщение от Altair42 Посмотреть сообщение
Это очень отличается от обычного массива которого вы описали.
Назовите хотя бы одно принципиальное отличие.
На мой взгляд, C-строка отличается от массива примерно так же,
как std::string от std::vector<T_Char>. То есть, практичеки никак.
gazlan
2862 / 1810 / 272
Регистрация: 27.08.2010
Сообщений: 4,899
Записей в блоге: 1
15.05.2014, 21:23     Стоит ли изучить программирование в стиле С? #10
Цитата Сообщение от Убежденный Посмотреть сообщение
практичеки, никак
Причем, это сделано намеренно, чтобы избежать накладных расходов, связанных с поддержанием отдельного строкового типа. Никаких "строк" в C нет, только "джентльменская договоренность" о специальным образом сформированных символьных массивах.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16827 / 5248 / 321
Регистрация: 30.03.2009
Сообщений: 14,132
Записей в блоге: 26
15.05.2014, 23:25     Стоит ли изучить программирование в стиле С? #11
Цитата Сообщение от gazlan Посмотреть сообщение
только "джентльменская договоренность"
Договорённость вовсе не джентельменская, а закреплённая в стандарте в той части, где речь идёт о стандартных функциях (без которых строка как понятие особого смысла не имеет)

Добавлено через 36 секунд
А ещё в той части, где описана семантика строкового литерала
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
16.05.2014, 12:29  [ТС]     Стоит ли изучить программирование в стиле С? #12
Цитата Сообщение от 0x10 Посмотреть сообщение
И чем же? Я даже не поленился - книжку открыл. Там написано то же самое, только с примерами и занимает 5 страниц.
Разница в том что создание и работа с обычным массивом куда проще чем работа с строкой в стиле C. Я так понял чтоб работать с сторокой в стиле С надо знать как это делается на языке С. По этому и создал тему. Важно ли учиться строит массивы и работать с ними в языке С?
Я прочел эти 5 страницы и понял только одно. Без знание языка С ( как минимум того что относится к массивам) мне не как не понят как работа с строкой в стиле С. ( Читать код одно но создать его и работать с ним, это уже совсем другое.)Если С++ дает возможность работать с массивами не используя С то я не вижу смысла изучать их на языке С. Но так как я "начинаю первые шаги в этом мире". Мне надо знать я прав или нет.

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

Добавлено через 4 минуты
Прошу вас не превратит тему в "священные войны". Мне надо только знать.

Обязательно изучать строки в стиле С? Или хватит знаний массива?
Если я начну изучать строки в стиле С мне придется изучать язык С. Чтобы полностью понят что к чему.
Archi0
28 / 14 / 4
Регистрация: 18.07.2013
Сообщений: 164
16.05.2014, 13:13     Стоит ли изучить программирование в стиле С? #13
std::vector<T_Char>. Не обладает свойством copy on write. Если на у нас несколько строк создано через =, то они указывают все на один объект. При изменении строки через одну из переменных создаётся копия не меняющая другие переменные. При изменении строки при единственном хозяине копия не создаётся. Такого механизма нет в vector так, что это не одно и тоже. Хотя одно из полей string действительно vector из шаблонного basicString насколько помню, который можно забить char или wchar.

Добавлено через 4 минуты
Обязательно изучать строки в стиле С? Или хватит знаний массива?
Если я начну изучать строки в стиле С мне придется изучать язык С. Чтобы полностью понят что к чему. Нету в Си строк, в том смысле, что это понятие полностью искусственное и сделано из последовательности char с последним равным 0. И то, что надо знать кроме этого может быть несколько функций для работы с такими последовательностями char, чтобы не писать свои велосипеды.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
16.05.2014, 14:30  [ТС]     Стоит ли изучить программирование в стиле С? #14
Archi0, друг мой мне нужен ответ да или нет

Вы меня еще больше путаете.
Есть в Си строк, массивов или что там еще, мне не интересно. В книге по которому я учу С++ строкам в стиле С уделено достаточно внимание но с указанием - не использовать. Я прочел все что там написано на счет этого понял только то что используемые ( команды или что еще там) с языка Си. А значит чтоб понят ка работает строки в стиле С надо знать как работают эти команды.
То что они по сути массив я знаю.
В принципе строка в стиле С тот же самый массив но в языке С. Хотя бы посмотрите раздел где создана тема.
Может и не языке С но там присудствуют компоненты Си которых я не понимаю.

Цитата Сообщение от Archi0 Посмотреть сообщение
...Нету в Си строк, в том смысле, что это понятие полностью искусственное и сделано из последовательности char с последним равным 0. И то, что надо знать кроме этого может быть несколько функций для работы с такими последовательностями char, чтобы не писать свои велосипеды.
Цитирую из книги (Липпман ).
"Стандартная библиотека С предоставляет набор функций для работы с строками в стиле С"
Есть вариант этой библиотеки для С++ - cstring. Но так как сама библиотека на С не имею понятие как можно использовать эту библиотеку без знаний С ( в принципе можно но при использование будет слишком много ошибок и недопонимание которых не смогу компенсировать не зная С.).

Добавлено через 21 минуту
Мне только надо знать. На сколько актуальны сегодня строки в стиле С. Ибо использовать цикл чтоб копировать один массив другому мне проще чем запомнит strcpy () Я так понял что тут 2 слово string + copy. Только что заметил. Но не уверен что я прав. Зная что там смесь 2 слов запомнит strcpy() проще чем запомнит какой та набор не связанных букв ( прежде так его видел). И сколько же таких "наборов букв" в библиотеке cstring? С моим то пониманием вещей можно заблудится среди этих наборов букв. Мне пришлось 3 раза посмотреть в книгу чтоб написать strcpy() пока не понял что там 2 слово. Теперь я просто вспоминаю string + copy, ибо понимаю что означают эти слова(это к тому то я не могу запомнит как есть мне надо понят как сделано).
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
16.05.2014, 14:31     Стоит ли изучить программирование в стиле С? #15
Цитата Сообщение от Altair42 Посмотреть сообщение
Прошу вас не превратит тему в "священные войны". Мне надо только знать.
Вы сами ее и превращаете в таковую, раздувая из мухи слона.
Цитата Сообщение от Altair42 Посмотреть сообщение
Стоит ли изучить программирование в стиле С?
Да.
Archi0
28 / 14 / 4
Регистрация: 18.07.2013
Сообщений: 164
16.05.2014, 14:39     Стоит ли изучить программирование в стиле С? #16
О том и речь, что без библиотеки это всего лишь последовательность char, если вам всего лишь экзамен сдать и в нём не будет вопросов по этому, то можно и не учить потеряете только возможность читать чужой код использующий их. String имеет все подобные функции, что были просто для последовательности char. Отсутствие длины плохо сказывается на некоторых алгоритмах, особенно, если использовать в цикле функции из Си библиотеки, которые постоянно заново мерят строку (если это надо в их реализации), а единственный способ избавится от этого написать свою функцию работающую с массивом char. Так же вас не будет волновать вопрос, что прибавив к строке новую нужно заботится, а хватит ли места в памяти (подобные ошибки делали даже в книгах забывая прибавить 1 к malloc), потому что вектор сам все сделает за вас.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
16.05.2014, 14:45  [ТС]     Стоит ли изучить программирование в стиле С? #17
Цитата Сообщение от Tulosba Посмотреть сообщение
Вы сами ее и превращаете в таковую, раздувая из мухи слона.
Нуу я что та не вижу тут мухи. я задал простой вопрос получил объяснение и споры.

Tulosba, можно узнать зачем если есть более простые способы написать тот же код?

А я хотел не мучат себя с ними, этот стил ужасно сложный для меня.

Добавлено через 4 минуты
Archi0, мне не надо сдавать эгзамен я хочу научится программированию. Чтоб читать код не надо умет писать программу на этом языке или в стиле того программиста. Я к тому что пригодится ли мне этот стил.
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
16.05.2014, 14:53     Стоит ли изучить программирование в стиле С? #18
Цитата Сообщение от Altair42 Посмотреть сообщение
Мне только надо знать. На сколько актуальны сегодня строки в стиле С.
Для некоторых случаев удобно использовать string, для некоторых - char*. Все зависит от специфики задачи. Да и как уже сказали - нечего там учить. За то время, пока существует эта тема, запомнить
все что нужно можно было 10 раз.
Цитата Сообщение от Altair42 Посмотреть сообщение
И сколько же таких "наборов букв" в библиотеке cstring
Ну, названия функциям даны не просто так (вы это уже заметили). Естественно, на первых порах может и не запоминаться - все познается на практике. И только. Напишешь несколько десятков раз код с использованием того же strcpy, и запомнишь, для чего он нужен, как пишется и какие принимает параметры. Да и гугл все таки есть, найти название нужной функции несложно, если она существует... Все это при условии, что это не просто ради зачета, а действительно хочется чему-либо научится.

Цитата Сообщение от Altair42 Посмотреть сообщение
А я хотел не мучат себя с ними, этот стил ужасно сложный
Тогда стоит задуматься, а нужно ли пытаться программировать, если это сложно и неинтересно?) Потому что дальше будет только сложнее)
Archi0
28 / 14 / 4
Регистрация: 18.07.2013
Сообщений: 164
16.05.2014, 14:57     Стоит ли изучить программирование в стиле С? #19
Чтобы не сидеть часами думая где ошибка в Си надо понимать к чему приводят ошибки в памяти и как с этой памятью работать char как один байт в этом может пригодится для более простого программирования можно посмотреть в сторону C#. Я плюсы использую только там где надо добиться экстремальной скорости п этому использую его чаще как Си с небольшими улучшениями. Ниже пример как программа может интерпретировать память при выходе за границы массива.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*class ClassOne
{ int x;
public:
 int func()
 {return x;}
};*/
int main()
{
 std::cout<<sizeof(ClassOne)<<"\n";
 int f=8;
 void* p = &f;
 std::cout<<((ClassOne*)p)->func();
 system("pause");
}
/*class ClassOne
{
 int x;
public:
 virtual int func()
 {return x;}
};*/
int main()
{
 std::cout<<sizeof(ClassOne)<<"\n";
 ClassOne b;
 void* t = &b;
 std::cout<<*(((int*)t+1))<<"\n";
 int f[]={*(int*)t,8};
 void* p = &f;
 std::cout<<((ClassOne*)p)->func();
 system("pause");
}
Функции могут быть вызваны на тех объектах где их и не существовало
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2014, 14:57     Стоит ли изучить программирование в стиле С?
Еще ссылки по теме:

C++ Что стоит изучить, что перейти от консольных приложений к оконным
Cтоит ли после изучения Си++ изучить Си C++
C++ Низкоуровневость в c++. Стоит или не стоит его учить?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
16.05.2014, 14:57     Стоит ли изучить программирование в стиле С? #20
Цитата Сообщение от Altair42 Посмотреть сообщение
не вижу тут мухи
Несмотря на название темы, основном момент Вы уделили почему-то именно строкам. А это как раз "муха".
Если Вы собрались писать на C++, рано или поздно всё равно придется залезать в более низкоуровневые части. Поэтому Си тут будет хорошим подспорьем, а так же ассемблер, знание архитектуры компа и прочее. Я не говорю, что обязательно надо знать это всё на зубок, но ознакомиться точно не помешает.
Yandex
Объявления
16.05.2014, 14:57     Стоит ли изучить программирование в стиле С?
Ответ Создать тему
Опции темы

Текущее время: 04:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru