char * и char[]
Недавно начал изучать С++ и возник такой вопрос: почему
не то же самое что и:
?
В голове появилась такая идея, что
то же самое что и
из-за того что в случае с указателем с данными массива работать нельзя.
Объясните, пожайлуста, новичку чем отличаются друг от друга 2 первые приведенные конструкции. :)
Вот чёрт! Тема называется "char* и char[]", поэтому я считаю, что она шире рамок С++. Я тебя, конечно, переубедить не смогу, но и ты меня тоже.
[quote=Green]Тогда расскажи мне, где вы спорите. Я тоже поспорю там твоими методами.[/quote]То-то бы я посмеялся. Но бесполезно давать тебе ссылки на серьёзные медицинские форумы. Там тебя (да и меня тоже) за один только используемый тон, не говоря уже о полной некомпетентности, живо вышвырнули бы к чёртовой матери.
[quote=Green]А от куда начинать рассказывать про строки в С++?
С бейсика, с ассемблера, с явы?
Почему ты сам начал объяснять не с алгола и фортрана?[/quote]Ну зачем такую чушь писать? Какое отношение это всё имеет к С++?
[quote=Green]Кстати, объясни, как можно ответить про строки в С++ с точки зрения другого языка программирования? Ты сам то абсурдность своей позиции замечаешь?[/quote]А по-моему, абсурдны твои суждения. Я глубоко убеждён, что нельзя учить С++, не ознакомившись для начала с С. Почему? А ты вспомни ту смехотворную тему, когда автор спрашивал, каким образом ему записать число в файл в "256-ричной системе счисления", чтобы оно занимало меньше места. То есть, чтобы 10, например, выглядело не как строка, а занимало всего 1 байт? Так ему ещё советы давали, про архиваторы упоминали. А ведь это всё последствия системы, когда человеку, впервые севшему учиться программировать, сразу под нос суют объекты ввода-вывода типа iostream.
[quote=Green]Нормальное, профессиональное.[/quote]Ну-у-у, убиваешь наповал. Даже и не знаю, как тут спорить. Как доказать очевидное? Вроде бы достаточно просто синтаксис сравнить... Может, кто-то ещё захочет высказаться по этому поводу. Моих-то доводов ты всё равно не услышишь.
[quote=Green]Не знаю, так получилось.
Ты считаешь тему форума основным доказательством происхождения C# от C? :D[/QUOTE]Но кто-то же назвал его С#, а не, скажем, Pascal#, и в одну ветку кто-то собрал эти 3 языка тоже для чего-то. Но нет, я великий и непогрешимый Green, и всё, что говорят другие, мне по барабану, я один всегда прав, а другие - только если соглашаются с моим мнением.
Ты кстати что - в отпуске, что ли? Или работа у тебя такая интенсивная, что со мной тут препираться не впадлу?
Динамический массив - это, в принципе, несколько ошибочное понятие. Хотя очень расхожее.
Я тоже его употребляю, когда говорю о динамическом создании массива (именно с помощью new[]).
Но к типам или к переменным это отношения не имеет.
гыыыыыыы!!! да где я упомянул про типы!? наоборот, я же сказал, что не про типы говорил!
ShadyMan, ты так и не ответил.
[quote=Free Thinker]контр-вопрос: а что такое динамический массив по твоему?[/quote]Так и по-моему, как и по Green'овски, нет динамических массивов в С. Но вот он пишет, что и в С++ нет, а я в С++Builder'е видел какую-то хрень, извиняюсь за выражение, в угловых скобках. Так она, вроде, называлась динамическим массивом. (Пишу, аж самому смешно). Шаблон, надо полагать, по-вашему? В смысле, там в одни угловые скобки вкладывались такие же конструкции с угловыми скобками и получался многомерный динамический массив. В общем, не могу сейчас уточнить, так как Builder снёс за ненадобностью. Может, меня кто-то понял, всё-таки? :-))))
Во-первых, зачем расширять рамки там где автор задает конкретные рамки? Почему бы тогда не начать разговор о строках с филологической точки зрения?
Во-вторых, ты не "расширил рамки", а перевел их в др. степь, т.к. начал говорить про др. язык программирования.
В-третьих, если уж ты начал говорит с т.з. С, то зачем спорить с высказываниями с т.з. С++ ?
- Земля - это космическое тело.
- Нет, земля - это песок, перегной и др. минеральные вещества!
Ну зачем такую чушь писать? Какое отношение это всё имеет к С++?
Вот именно, какое все это отношение имеет к C++? :D
А по-моему, абсурдны твои суждения. Я глубоко убеждён, что нельзя учить С++, не ознакомившись для начала с С. Почему? А ты вспомни ту смехотворную тему, когда автор спрашивал, каким образом ему записать число в файл в "256-ричной системе счисления", чтобы оно занимало меньше места. То есть, чтобы 10, например, выглядело не как строка, а занимало всего 1 байт? Так ему ещё советы давали, про архиваторы упоминали. А ведь это всё последствия системы, когда человеку, впервые севшему учиться программировать, сразу под нос суют объекты ввода-вывода типа iostream.
А какое все это отношение имеет к C++? :D
А почему бы не начинать учить с ассемблера или с маш.кодов?
Тогда уж надо было и про строки начинать объяснять с т.з. TTL.
Ну-у-у, убиваешь наповал. Даже и не знаю, как тут спорить. Как доказать очевидное? Вроде бы достаточно просто синтаксис сравнить... Может, кто-то ещё захочет высказаться по этому поводу. Моих-то доводов ты всё равно не услышишь.
Вот в том то и ошибка, что ты смотришь с т.з. синтаксиса.
Dadi Shuttle тоже похож на Land Cruiser Prado, однако не является ни его аналогом, ни производным.
Java тоже имеет похожий синтаксис, чего же ты её не приплел?
Но кто-то же назвал его С#, а не, скажем, Pascal#, и в одну ветку кто-то собрал эти 3 языка тоже для чего-то.
Ну у кого-то могут быть свои мотивы...
Однако это не аргумент.
Но нет, я великий и непогрешимый Green, и всё, что говорят другие, мне по барабану, я один всегда прав, а другие - только если соглашаются с моим мнением.
Ты кстати что - в отпуске, что ли? Или работа у тебя такая интенсивная, что со мной тут препираться не впадлу?
Для обсуждения лично меня существует спец. ветка в гостевой. Милости прошу...
Читай внимательно.
Для char* и char[] в C разница если и есть, то ее средствами языка никак не узнать, а в C++ эта разница есть и Green тебе привел кучу примеров, где она играет роль. Даже если был вопрос задан про C и все "его производные" (очень непонятное определение), то ты опять не прав, т.к. уперся только в C.
[QUOTE="ShadyMan"]Достаточно заметить, что если бы преимущества С++ были признаны всеми, не было бы современных стандартов языка С и API Windows был бы тоже сплошь и рядом объектно-ориентированным (в конце концов, С++ тоже очень старый язык и за годы его существования эти самые "плюсы" должны были бы быть оценены по достоинству разработчиками ОС).[/QUOTE]
Фишка C++ не только в ООП. Там есть куча полезных механизмов начиная с перегрузки и заканчивая шаблонами. А стандарты всегда будут, если язык достаточно распространен. Возможно на C и проще написать ядро ОС (хотя с темой написания ОС знаком мало), но для написания серьезных прилождений C++ подходит намного лучше.
А WinAPI не объектно-ориентированный, чтобы поддерживать вызовы на C и других языках. К тому же, когда он разрабатывался стандарта на C++ не существовало. Что же касается ОО-интерфейса, то возьми тот же COM, на котором построено очень много компонентов ОС Windows.
А кстати знание основ ассемблера новичкам бы совсем не помешало, хотя я и не считаю это обязательным на первых порах. И ничего смешного тут нет. Машинные коды оставим для фанатиков и узких специалистов, а вот двоичную арифметику знать необходимо, чтобы не было, как в том топике, который я упомянул.
Dadi Shuttle тоже похож на Land Cruiser Prado, однако не является ни его аналогом, ни производным.
Java тоже имеет похожий синтаксис, чего же ты её не приплел?
Честно говоря, сразу забыл, а потом уже сообщение редактировать не стал. Хорошо, ты смотришь не с точки зрения синтаксиса. Просвети тогда, с какой точки зрения ты смотришь.
[quote=Green]Ну у кого-то могут быть свои мотивы...
Однако это не аргумент.[/quote]А, ну да, мнение других для тебя не аргумент. Точно, ты уже об этом писал много месяцев назад. Надо будет запомнить.
И то и другое понемногу. :-)
[quote=Nixus]Для char* и char[] в C разница если и есть, то ее средствами языка никак не узнать,[/quote]Но вот почему же не узнать? Как раз-таки Green привёл по этому поводу пример с sizeof.
[quote=Nixus]а в C++ эта разница есть и Green тебе привел кучу примеров, где она играет роль.[/quote]Ну и очень хорошо. Я ж говорю: можно стоя поаплодировать. Прекрасные примеры.
[quote=Nixus]Даже если был вопрос задан про C и все "его производные" (очень непонятное определение), то ты опять не прав, т.к. уперся только в C.[/quote]Я упёрся в С, потому что Green упёрся в С++, которым во всех тычет, как только заговорят о С, и дело не только в этом топике. Green это делает постоянно.
[quote=Nixus]Фишка C++ не только в ООП. Там есть куча полезных механизмов начиная с перегрузки и заканчивая шаблонами. А стандарты всегда будут, если язык достаточно распространен. Возможно на C и проще написать ядро ОС (хотя с темой написания ОС знаком мало), но для написания серьезных прилождений C++ подходит намного лучше.
А WinAPI не объектно-ориентированный, чтобы поддерживать вызовы на C и других языках. К тому же, когда он разрабатывался стандарта на C++ не существовало. Что же касается ОО-интерфейса, то возьми тот же COM, на котором построено очень много компонентов ОС Windows.[/QUOTE]Я уже сто раз говорил: я не против ООП и других полезных вещей в С++. Просто есть разные стили и вкусы.
[quote=ShadyMan]Я глубоко убеждён, что нельзя учить С++, не ознакомившись для начала с С.[/quote]
цитатой прокомментирую:
[quote=Б. Страуструп. Язык Си++. стр 18-19]
Чем лучше кто-нибудь знает C, тем труднее окажется избежать
писания на C++ в стиле C, теряя, тем самым, некоторые возможные
выгоды C++.[/quote]
вывод делайте сами, по-моему понятно, что классик имеет ввиду.
P.S. давайте уже заканчивайте.
А кстати знание основ ассемблера новичкам бы совсем не помешало, хотя я и не считаю это обязательным на первых порах. И ничего смешного тут нет. Машинные коды оставим для фанатиков и узких специалистов, а вот двоичную арифметику знать необходимо, чтобы не было, как в том топике, который я упомянул.
Все хорошо в свое время и в меру.
Курс школьной физики тоже полезен, однако в квантовой оперируют несколько иными понятиями.
Аналогично и в программировании,- многие вещи в ЯВУ лучше объяснять с позиции ЯВУ, а не ассемблера.
Честно говоря, сразу забыл, а потом уже сообщение редактировать не стал. Хорошо, ты смотришь не с точки зрения синтаксиса. Просвети тогда, с какой точки зрения ты смотришь.
С точки зрения концепции, идеалогии, парадигмы. Ну можно ещё добавить обратную совместимость, хотя это спорно.
Ты же просто перечислил языки с С-подобным синтаксисом.
Синтаксис - это ещё не основа языка.
А, ну да, мнение других для тебя не аргумент. Точно, ты уже об этом писал много месяцев назад. Надо будет запомнить.
Да, неаргументированное мнение других для меня не аргумент. Я люблю факты, а не домыслы.
Я упёрся в С, потому что Green упёрся в С++, которым во всех тычет, как только заговорят о С, и дело не только в этом топике. Green это делает постоянно.
А тема была о С ? Еще раз взгляни в топик! :D
Если ты говоришь про С, то зачем споришь с моими высказываниями про С++?
Так вот в чем дело! Тебя не тема зацепила, а Green со своим C++.
Ну ты уж извини, я привык говорить о том, что знаю, либо вообще не говорить.
По твоему, ради твоего душевного спокойствия, я должен был промолчать и не высказываться в этой теме?
Или все же позволишь мне рассказать о разнице с т.з. С++ ?
P.S. Такое впечатление, что ты в конец запутался, единственный мотив которым ты руководствуешься это "потому что Green упёрся в С++, которым во всех тычет".
А признать, что дело все лишь в ущемленном самолюбии нет сил.
Ты и спор то уже перевел на личности. И кстати, ни одного толкового аргумента я так от тебя и не услышал. Сплошное брызганье слюной.
Думаю, тему можно закрыть.
Все вопросы в личку или отдельной темой.
Но вот почему же не узнать? Как раз-таки Green привёл по этому поводу пример с sizeof.
Я имел в виду немножко другое. Хотя уже неважно. Религиозные люди тоже счастиливы по своему. :)