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

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

Войти
Регистрация
Восстановить пароль
 
Spirited
7 / 7 / 0
Регистрация: 18.01.2009
Сообщений: 55
#1

Объясните ошибку! - C++

07.06.2012, 11:58. Просмотров 278. Ответов 2
Метки нет (Все метки)

Здравствуйте, господа форумчане!

Предлагаю вашему вниманию фрагмент кода, который компилируется в Builder'е (винда), но g++ его не пропускает (под линухом) пишет 12: error: lvalue required as increment operand.

Мой вопрос заключается в том как изменить код, чтобы g++ его пропустил и почему ему такой вариант не нравиться?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  1 #include <iostream>
  2 #include <string.h>
  3 
  4 using namespace std;
  5 
  6 int main() {
  7         char arch[11] = "0123456789";
  8         int k = strlen(arch) + 1;
  9         char *newar = new char[k];
 10 
 11         for ( int i = 0; i < k; ) {
 12                 newar[i++] = *arch++;
 13                 
 14                 if ( !(i % 3) )
 15                         cout << "\narch = " << arch;
 16         }
 17 
 18         cout << "\nk = " << k << "  newar = " << newar;
 19         
 20         cout << "\nsizeof(arch) = " << sizeof(arch) << endl << endl;
 21         
 22         return 0;
 23 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2012, 11:58     Объясните ошибку!
Посмотрите здесь:

Объясните ошибку. (cout in iostream) C++
C++ объясните
C++ объясните
объясните C++
Объясните функцию классы в С++ и укажите мою ошибку. C++
C++ Объясните ошибку Unresolved external
C++ Объясните ошибку новичку в работе со строкой
Объясните программу C++
C++ Объясните ошибку
C++ Слишком много символов в константе - объясните ошибку
C++ Объясните
Объясните функцию? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
never old
8 / 8 / 1
Регистрация: 02.06.2012
Сообщений: 25
07.06.2012, 12:27     Объясните ошибку! #2
arch не объявлялся в качестве указателя
C++
1
2
        char *arch = new char[11];
        arch = "0123456789";
Так пропустит, но уже sizeof(arch) будет всегда 4
Spirited
7 / 7 / 0
Регистрация: 18.01.2009
Сообщений: 55
07.06.2012, 12:44  [ТС]     Объясните ошибку! #3
Спасибо разобрался.
можно еще и так без выделения памяти под arch

C++
1
2
3
        const char *arch = "0123456789";
        int k = strlen(arch) + 1;
        char *newar = new char[k];
Yandex
Объявления
07.06.2012, 12:44     Объясните ошибку!
Ответ Создать тему
Опции темы

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