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

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

Войти
Регистрация
Восстановить пароль
 
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 366
Записей в блоге: 1
#1

строка-указатель - C++

12.05.2013, 01:16. Просмотров 234. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
 
int main()
{
    char *original="1brainED 2brainED 3brainED notprint 4brainED 5brainED notprint 6brainED";
 
    while(*original!='\0')
    {
        cout<<"!!!!"<<endl;
    }
return 0;
}
строка указатель имеет ограничивающий нуль символ? нет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2013, 01:16     строка-указатель
Посмотрите здесь:

Про указатель *, указатель на указатель **, и про new C++
указатель C++
Командная строка. Безтиповой указатель. C++
Указатель this C++
C++ Указатель
C++ Указатель на указатель
Указатель и строка C++
C++ Ссылка на указатель на указатель
Освободить указатель на указатель C++
C++ Указатель
C++ Почему указатель на символ интерпретируется как текстовая строка
Определить класс «строка символов» с компонентными данными: длина строки, указатель на строку. Перегрузить оп C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Precise
26 / 26 / 1
Регистрация: 20.05.2012
Сообщений: 43
12.05.2013, 01:34     строка-указатель #2
Как видно ниже в обоих случаех присутствует символ конца строки!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <string>
 
using namespace std;
 
 
int main()
{
    char *original1="brainED 2brainED 3brainED notprint 4brainED 5brainED notprint 6brainED";
    string original2="brainED 2brainED 3brainED notprint 4brainED 5brainED notprint 6brainED";
    int index = original2.size();
 
    if(original2[index]!='\0')
    {
        cout<<original2[index]<<endl;
    }
        cin.get();
 
    if(original1[index-1]!='\0')
    {
        cout<<original1[index-1]<<endl;
    }
    cin.get();
return 0;
}
slipp1
13 / 12 / 1
Регистрация: 09.11.2012
Сообщений: 366
Записей в блоге: 1
12.05.2013, 01:41  [ТС]     строка-указатель #3
почему тогда мой код не работает?

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
 
int main()
{
    char *original="1brainED 2brainED 3brainED notprint 4brainED 5brainED notprint 6brainED";
 
    while(*original!='\0')
    {
        cout<<"!!!!"<<endl;
        original++;
    }
return 0;
}
исправил, пардон
Precise
26 / 26 / 1
Регистрация: 20.05.2012
Сообщений: 43
12.05.2013, 01:44     строка-указатель #4
Потому что *original - это первый символ вашей строки, вы в цикле сравниваете первый символ с нулевым символом, и у вас возникает бессконечный цикл! Напишите
C++
1
cout<<*original<<endl;
И убедитесь в моих словах. Теперь, все правильно!
Yandex
Объявления
12.05.2013, 01:44     строка-указатель
Ответ Создать тему
Опции темы

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