Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

char * и char[]

6.5K
31 июля 2007 года
viTTas
20 / / 02.04.2005
Здравствуйте, дорогие знатоки С++! :)
Недавно начал изучать С++ и возник такой вопрос: почему
 
Код:
char *name = "Vitka";

не то же самое что и:
 
Код:
char name[] = "Vitka";

?
В голове появилась такая идея, что
 
Код:
char *name = "Vitka";

то же самое что и
 
Код:
const char name[] = "Vitka";

из-за того что в случае с указателем с данными массива работать нельзя.

Объясните, пожайлуста, новичку чем отличаются друг от друга 2 первые приведенные конструкции. :)
Страницы:
3.3K
06 августа 2007 года
ShadyMan
191 / / 15.07.2006
Цитата: Green
Тема была про строки в С++. Смотри топик.

Вот чёрт! Тема называется "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, и всё, что говорят другие, мне по барабану, я один всегда прав, а другие - только если соглашаются с моим мнением.
Ты кстати что - в отпуске, что ли? Или работа у тебя такая интенсивная, что со мной тут препираться не впадлу?

11K
06 августа 2007 года
Free Thinker
118 / / 16.03.2007
Цитата: Green
Ну так и в С нет такого типа.
Динамический массив - это, в принципе, несколько ошибочное понятие. Хотя очень расхожее.
Я тоже его употребляю, когда говорю о динамическом создании массива (именно с помощью new[]).
Но к типам или к переменным это отношения не имеет.



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

ShadyMan, ты так и не ответил.

3.3K
06 августа 2007 года
ShadyMan
191 / / 15.07.2006
[quote=Green]Однако тянет поспорить в том, в чем разбираться не тянет.[/quote]Сколько можно? Я не рассуждаю о том, в чём не разбираюсь. Не знаю, что такое шаблон, так и пишу: не знаю. Какие претензии?
[quote=Free Thinker]контр-вопрос: а что такое динамический массив по твоему?[/quote]Так и по-моему, как и по Green'овски, нет динамических массивов в С. Но вот он пишет, что и в С++ нет, а я в С++Builder'е видел какую-то хрень, извиняюсь за выражение, в угловых скобках. Так она, вроде, называлась динамическим массивом. (Пишу, аж самому смешно). Шаблон, надо полагать, по-вашему? В смысле, там в одни угловые скобки вкладывались такие же конструкции с угловыми скобками и получался многомерный динамический массив. В общем, не могу сейчас уточнить, так как Builder снёс за ненадобностью. Может, меня кто-то понял, всё-таки? :-))))
3
06 августа 2007 года
Green
4.8K / / 20.01.2000
Цитата: ShadyMan
Вот чёрт! Тема называется "char* и char[]", поэтому я считаю, что она шире рамок С++. Я тебя, конечно, переубедить не смогу, но и ты меня тоже.


Во-первых, зачем расширять рамки там где автор задает конкретные рамки? Почему бы тогда не начать разговор о строках с филологической точки зрения?

Во-вторых, ты не "расширил рамки", а перевел их в др. степь, т.к. начал говорить про др. язык программирования.

В-третьих, если уж ты начал говорит с т.з. С, то зачем спорить с высказываниями с т.з. С++ ?


- Земля - это космическое тело.
- Нет, земля - это песок, перегной и др. минеральные вещества!


Цитата: ShadyMan

Ну зачем такую чушь писать? Какое отношение это всё имеет к С++?


Вот именно, какое все это отношение имеет к C++? :D

Цитата: ShadyMan

А по-моему, абсурдны твои суждения. Я глубоко убеждён, что нельзя учить С++, не ознакомившись для начала с С. Почему? А ты вспомни ту смехотворную тему, когда автор спрашивал, каким образом ему записать число в файл в "256-ричной системе счисления", чтобы оно занимало меньше места. То есть, чтобы 10, например, выглядело не как строка, а занимало всего 1 байт? Так ему ещё советы давали, про архиваторы упоминали. А ведь это всё последствия системы, когда человеку, впервые севшему учиться программировать, сразу под нос суют объекты ввода-вывода типа iostream.


А какое все это отношение имеет к C++? :D
А почему бы не начинать учить с ассемблера или с маш.кодов?
Тогда уж надо было и про строки начинать объяснять с т.з. TTL.

Цитата: ShadyMan

Ну-у-у, убиваешь наповал. Даже и не знаю, как тут спорить. Как доказать очевидное? Вроде бы достаточно просто синтаксис сравнить... Может, кто-то ещё захочет высказаться по этому поводу. Моих-то доводов ты всё равно не услышишь.


Вот в том то и ошибка, что ты смотришь с т.з. синтаксиса.
Dadi Shuttle тоже похож на Land Cruiser Prado, однако не является ни его аналогом, ни производным.
Java тоже имеет похожий синтаксис, чего же ты её не приплел?

Цитата: ShadyMan

Но кто-то же назвал его С#, а не, скажем, Pascal#, и в одну ветку кто-то собрал эти 3 языка тоже для чего-то.


Ну у кого-то могут быть свои мотивы...
Однако это не аргумент.

Цитата: ShadyMan

Но нет, я великий и непогрешимый Green, и всё, что говорят другие, мне по барабану, я один всегда прав, а другие - только если соглашаются с моим мнением.
Ты кстати что - в отпуске, что ли? Или работа у тебя такая интенсивная, что со мной тут препираться не впадлу?


Для обсуждения лично меня существует спец. ветка в гостевой. Милости прошу...

353
06 августа 2007 года
Nixus
840 / / 04.01.2007
ShadyMan, ты так действительно считаешь или стебешься? :)

Читай внимательно.
Для char* и char[] в C разница если и есть, то ее средствами языка никак не узнать, а в C++ эта разница есть и Green тебе привел кучу примеров, где она играет роль. Даже если был вопрос задан про C и все "его производные" (очень непонятное определение), то ты опять не прав, т.к. уперся только в C.

[QUOTE="ShadyMan"]Достаточно заметить, что если бы преимущества С++ были признаны всеми, не было бы современных стандартов языка С и API Windows был бы тоже сплошь и рядом объектно-ориентированным (в конце концов, С++ тоже очень старый язык и за годы его существования эти самые "плюсы" должны были бы быть оценены по достоинству разработчиками ОС).[/QUOTE]
Фишка C++ не только в ООП. Там есть куча полезных механизмов начиная с перегрузки и заканчивая шаблонами. А стандарты всегда будут, если язык достаточно распространен. Возможно на C и проще написать ядро ОС (хотя с темой написания ОС знаком мало), но для написания серьезных прилождений C++ подходит намного лучше.
А WinAPI не объектно-ориентированный, чтобы поддерживать вызовы на C и других языках. К тому же, когда он разрабатывался стандарта на C++ не существовало. Что же касается ОО-интерфейса, то возьми тот же COM, на котором построено очень много компонентов ОС Windows.
3.3K
06 августа 2007 года
ShadyMan
191 / / 15.07.2006

А кстати знание основ ассемблера новичкам бы совсем не помешало, хотя я и не считаю это обязательным на первых порах. И ничего смешного тут нет. Машинные коды оставим для фанатиков и узких специалистов, а вот двоичную арифметику знать необходимо, чтобы не было, как в том топике, который я упомянул.

Цитата: Green
Вот в том то и ошибка, что ты смотришь с т.з. синтаксиса.
Dadi Shuttle тоже похож на Land Cruiser Prado, однако не является ни его аналогом, ни производным.
Java тоже имеет похожий синтаксис, чего же ты её не приплел?

Честно говоря, сразу забыл, а потом уже сообщение редактировать не стал. Хорошо, ты смотришь не с точки зрения синтаксиса. Просвети тогда, с какой точки зрения ты смотришь.
[quote=Green]Ну у кого-то могут быть свои мотивы...
Однако это не аргумент.[/quote]А, ну да, мнение других для тебя не аргумент. Точно, ты уже об этом писал много месяцев назад. Надо будет запомнить.

3.3K
06 августа 2007 года
ShadyMan
191 / / 15.07.2006
Цитата: Nixus
ShadyMan, ты так действительно считаешь или стебешься? :)

И то и другое понемногу. :-)
[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]Я уже сто раз говорил: я не против ООП и других полезных вещей в С++. Просто есть разные стили и вкусы.

257
06 августа 2007 года
kosfiz
1.6K / / 18.09.2005
кхм. я только прокомментирую вот эту фразу:
[quote=ShadyMan]Я глубоко убеждён, что нельзя учить С++, не ознакомившись для начала с С.[/quote]
цитатой прокомментирую:
[quote=Б. Страуструп. Язык Си++. стр 18-19]
Чем лучше кто-нибудь знает C, тем труднее окажется избежать
писания на C++ в стиле C, теряя, тем самым, некоторые возможные
выгоды C++.[/quote]
вывод делайте сами, по-моему понятно, что классик имеет ввиду.

P.S. давайте уже заканчивайте.
3
06 августа 2007 года
Green
4.8K / / 20.01.2000
Цитата: ShadyMan

А кстати знание основ ассемблера новичкам бы совсем не помешало, хотя я и не считаю это обязательным на первых порах. И ничего смешного тут нет. Машинные коды оставим для фанатиков и узких специалистов, а вот двоичную арифметику знать необходимо, чтобы не было, как в том топике, который я упомянул.


Все хорошо в свое время и в меру.
Курс школьной физики тоже полезен, однако в квантовой оперируют несколько иными понятиями.
Аналогично и в программировании,- многие вещи в ЯВУ лучше объяснять с позиции ЯВУ, а не ассемблера.

Цитата: ShadyMan

Честно говоря, сразу забыл, а потом уже сообщение редактировать не стал. Хорошо, ты смотришь не с точки зрения синтаксиса. Просвети тогда, с какой точки зрения ты смотришь.


С точки зрения концепции, идеалогии, парадигмы. Ну можно ещё добавить обратную совместимость, хотя это спорно.

Ты же просто перечислил языки с С-подобным синтаксисом.
Синтаксис - это ещё не основа языка.

Цитата: ShadyMan

А, ну да, мнение других для тебя не аргумент. Точно, ты уже об этом писал много месяцев назад. Надо будет запомнить.


Да, неаргументированное мнение других для меня не аргумент. Я люблю факты, а не домыслы.

Цитата: ShadyMan

Я упёрся в С, потому что Green упёрся в С++, которым во всех тычет, как только заговорят о С, и дело не только в этом топике. Green это делает постоянно.


А тема была о С ? Еще раз взгляни в топик! :D

Если ты говоришь про С, то зачем споришь с моими высказываниями про С++?

Так вот в чем дело! Тебя не тема зацепила, а Green со своим C++.
Ну ты уж извини, я привык говорить о том, что знаю, либо вообще не говорить.

По твоему, ради твоего душевного спокойствия, я должен был промолчать и не высказываться в этой теме?
Или все же позволишь мне рассказать о разнице с т.з. С++ ?

P.S. Такое впечатление, что ты в конец запутался, единственный мотив которым ты руководствуешься это "потому что Green упёрся в С++, которым во всех тычет".
А признать, что дело все лишь в ущемленном самолюбии нет сил.
Ты и спор то уже перевел на личности. И кстати, ни одного толкового аргумента я так от тебя и не услышал. Сплошное брызганье слюной.

Думаю, тему можно закрыть.
Все вопросы в личку или отдельной темой.

353
06 августа 2007 года
Nixus
840 / / 04.01.2007
Цитата: ShadyMan

Но вот почему же не узнать? Как раз-таки Green привёл по этому поводу пример с sizeof.


Я имел в виду немножко другое. Хотя уже неважно. Религиозные люди тоже счастиливы по своему. :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог