Форум программистов, компьютерный форум, киберфорум
Наши страницы

Как объявить строковую переменную? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подсчитать в строке количество символов до точки с запятой и после нее. http://www.cyberforum.ru/cpp-beginners/thread357040.html
Всем доброго времени суток. Прощу прощения, снова нужна ваша помощь. Если кто может помочь буду благодарен. Строки 1. В заданной строке имеется одна точка с запятой ( ; ). Подсчитать...
C++ Перегрузка оператора += Есть два класса: Vec4(вектор из 4х float) и Mat4(вектор из 4х Vec4). Проблема в том что при перегрузке в Mat4 операции += я получаю ошибку компиляции In member function 'Mat4&... http://www.cyberforum.ru/cpp-beginners/thread357032.html
C++ условие
Ответ скорее всего прост,но не могу придумать никак #include <stdio.h> #include <conio.h> #include <locale.h> int fact(int n)//в цикле со счётчиком умножают переменную на счетчик, который...
C++ Расчитать значение функии f(x) по соответсвующей формуле.
Добрый день, вот моё задание: Составьте алгоритм программы, которая принимает от пользователя значение x и в зависимости от его значения, расчитывет значение функии f(x) по соответсвующей формуле....
C++ Создание динамического массива http://www.cyberforum.ru/cpp-beginners/thread356987.html
const int Num=5; const int SIZE=4096 * Num; SHORT Buf; как такое заменить, если Num- инициализируется при загрузке программы, читается из файла. int Num; int SIZE=4096 * Num; SHORT* Buf...
C++ Компиляторы Скажите пожалуйста какие сейчас есть компиляторы для С++ и какой из них на сегодняшний день самый распространённый и широкоиспользуемый? подробнее

Показать сообщение отдельно
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
28.09.2011, 12:13
-=ЮрА=-, как уже выше было упомянуто-изменение строкового литерала-неопределённое поведение.(в стандарте это написано)
Неопределённое поведение, может совпадать с тем поведением которое ожидает пользователь.
А может и не совпадать(поведение не определено).

1.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
int main()
{
    char a[] = "VasiaPupkin";
    a[3] = '!';//Всё ок
    const char * b = "VasiaPupkin";
    b[3] = '!';//Ну да надеемся))) const в жизни не позволит этого сделать
    return 0;
}
и даже так нельзя делать:
C++
1
    *((char*)&b[3]) = '!';
2.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    char a[] = "VasiaPupkin";
    std::cout<<a<<"\r\n";
    a[3] = '!';//Всё ок
    std::cout<<a<<"\r\n";
 
    char * c = (char *)"VasiaPupkin";
    std::cout<<c<<"\r\n";
    c[3] = '!';//И вот так НЕЛЬЗЯ делать
    std::cout<<c<<"\r\n";
    getch();
    return 0;
}
3.
Вот так тоже НЕЛЬЗЯ делать:
C++
1
2
3
char * s = (char *)"русский";
CharToOem(s,s);//нельзя, т.к. попытка изменить строковой литерал
printf("%s",s);
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru