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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Shtrich
0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 18
#1

char *st="String" - C++

15.02.2012, 00:58. Просмотров 621. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
void main()
{   
    char *st="String";
    st[1]='1';
}
Есть ли ошибка в третьей строчке.
И если да, то где именно хранится эта строка, и почему она доступна только для чтения.
Если нет, то почему работает вот такой код:
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <conio.h>
void main()
{   
    char *st="asd";
    std::cout<<st[1];
    _getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2012, 00:58     char *st="String"
Посмотрите здесь:

Как избавиться от "deprecated conversion from string constant to ‘char*’" - C++
Здравствуйте. У меня компилятор пишет: _.cpp:15: warning: deprecated conversion from string constant to ‘char*’ _.cpp:16:...

IntelliSense: несовместимые типы операндов ("char" и "const char *") - C++
привет всем! при таком коде: void main() { ifstream fin; ofstream fout; fin.open(&quot;input.txt&quot;); ...

Несовместимые типы операндов "char" и "const char*" - C++
В чем проблема?

invalid conversion from "const char*" to "char" - C++
Помогите, пожалуйста, найти проблему. Arguments.h #include&lt;iostream&gt; class Arguments { public: Arguments(int iArgc,...

Невозможно преобразовать "const char" в "char" - C++
Вот код: void vvod() { char name_of_file; int i; char linetype1; char linetype2; int razmer_pera; struct colour {

Преобразовать параметр из "WCHAR [260]" в "const char *" - C++
Подскажите пожалуйста, как &quot; преобразовать параметр из &quot;WCHAR &quot; в &quot;const char *&quot;&quot;? Вот,по коду я думаю понятно будет. Если поставить...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
15.02.2012, 01:14     char *st="String" #2
"String" - это литерал( константа, фиксированное значение), т.е. это
C++
1
st[1]='1';
ошибка.
Такой литерал хранится в статической памяти, которая формируется при компиляции.
Если нет, то почему работает вот такой код:
Потому что в данном случае st[1] рассматривается как rvalue.
Это чтение, а не запись.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.02.2012, 01:18     char *st="String" #3
"String" - этот строковый литерал - константа, компилятор располагает его в области доступной только для чтения, в 3-й строке 1-го листинга(или в 5-й строке 2-го листинга) создается указатель который указывает на эту константу, тоесть ты в 4-й строке 1-го листинга пытаешься изменить константу, а это невозможнно! В 6-й строке 2-го листинга, изменения константы не происходит ибо там она исппользуется только для чтения.

Не по теме:

опоздал)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2012, 01:58     char *st="String"
Еще ссылки по теме:

Что происходит когда например "char* g="fdgag";"? - C++
Сабж. Я понял создается динамический массив с помощью malloc() и поэтому к нему не обратится таким образом: g. Я прав?

Ошибка со string: "идентификатор "string" не определен" - C++
Пытаюсь объявить переменную static string stt = &quot;d&quot;; но в студии вылазиет ошибка что идентификатор &quot;string&quot; не определен, что делать? ...

Error C2440 невозможно преобразовать "void *" в "char * - C++
Уважаемые форумчане. Не могу понять почему ему не нравятся указатели. Запускал прогу на разных компиляторах одна и та же ошибка. Error...

Ошибка: argument of type "char *" is incompatible with parameter of type "LPCWSTR" - C++
Помогите, пожалуйста, исправить ошибку в программе. #include &lt;iostream&gt; #include &quot;stdio.h&quot; #include &quot;windows.h&quot; #include &lt;conio.h&gt; ...

Ошибка: "invalid conversion from char* to char" - C++
Граждане,товарищи изучаю C++ и зациклился на проблеме,мне надо подсчитать количество букв в массиве введённом с клавиатуры#include...

Аргумент типа "char *" несовместим с параметром типа "LPCWSTR" - C++
Что такое и с чем его едят 1 IntelliSense: аргумент типа &quot;char *&quot; несовместим с параметром типа...


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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт CЭксперт С++
9466 / 5479 / 927
Регистрация: 25.07.2009
Сообщений: 10,503
15.02.2012, 01:58     char *st="String" #4
Цитата Сообщение от Shtrich Посмотреть сообщение
char *st="String";
По большому счёту вот это уже не правильно. Правильно было бы
C
1
const char * st = "String";
Yandex
Объявления
15.02.2012, 01:58     char *st="String"
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru