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

Программа виснет при переходе в функцию function - C++

Восстановить пароль Регистрация
 
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
07.03.2014, 12:32     Программа виснет при переходе в функцию function #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream> 
using namespace std;
 
void function(char * string)
{
    while(*string)
    {
     cout<<*string;
     *string++;
    }
}
 
int main()
 
{ 
    char string[20];
    cout<<"Enter string ";
    cin>>string;
    function(string);
    system("pause");
}


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream> 
using namespace std;
 
void function(char * string)
{
    while(*string)
    {
     cout<<*string;
     *string++;
    }
}
 
int main()
 
{ 
    char * string="";
    cout<<"Enter string ";
    cin>>string;
    function(string);
    system("pause");
}
Почему если я объявляю строку string в main как char * string,то программа виснет при переходе в функцию function?Если объявляю переменную как char string[100],то все проходит нормально.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
THE--MASTER
Заблокирован
07.03.2014, 12:43     Программа виснет при переходе в функцию function #2
Цитата Сообщение от Игорюня Посмотреть сообщение
Почему если я
потому что у тебя будет вечный while, ты понимаешь вообще что ты делаешь?
char * string=""; - вот это указатель на динамический массив чаров длинной в 1 символ.

Добавлено через 45 секунд
делай хотя бы так char * string = new char[100];
DrOffset
6416 / 3790 / 876
Регистрация: 30.01.2014
Сообщений: 6,575
07.03.2014, 12:51     Программа виснет при переходе в функцию function #3
Цитата Сообщение от Игорюня Посмотреть сообщение
Почему если я объявляю строку string в main как char * string
потому что char * string - это не строка. Это указатель, который указывает (в данном случае) на константную строку.
Разве компилятор не выдает предупреждение?
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
07.03.2014, 13:46  [ТС]     Программа виснет при переходе в функцию function #4
Спасибо.Раньше считал,что char string[] и char * string="" -это одно и тоже.
DrOffset
6416 / 3790 / 876
Регистрация: 30.01.2014
Сообщений: 6,575
07.03.2014, 15:24     Программа виснет при переходе в функцию function #5
C++
1
2
3
4
5
6
7
char s1[] = "123"; //неконстантный (можно менять содержимое массива) массив символов с начальным значением '1','2','3','0', размер 4
char s2[4]; //неконстантный массив символов (можно менять содержимое массива), размер 4, начального значения нет
char * pS1 = "123"; //адрес первого элемента константного массива символов (который неявно приведен к указателю на
 //неконстантный массив), через этот адрес нельзя менять содержимое массива, хоть язык это и позволяет (эта возможность
 //оставлена по историческим причинам). поведение программы в случае попытки изменения неопределено.
char const * pS2 = "123"; //адрес первого элемента константного массива символов (содержимое менять нельзя и система типов
 //языка не позволит это нарушить без явных приведений).
Tulosba
:)
Эксперт C++
4377 / 3220 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.03.2014, 17:55     Программа виснет при переходе в функцию function #6
Цитата Сообщение от DrOffset Посмотреть сообщение
с начальным значением '1','2','3','0',
... '\0'
Можно ещё добавить:
C++
1
char const * const pS3 = "123"; // Константный адрес первого элемента константного массива символов
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2014, 17:58     Программа виснет при переходе в функцию function
Еще ссылки по теме:

C++ Сделать так, что бы при неверном значении программа сообщала об этом и запускала функцию второй раз
C++ Std::function на шаблонную функцию
Сбиваются указатели при переходе между функциями C++

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

Или воспользуйтесь поиском по форуму:
DrOffset
6416 / 3790 / 876
Регистрация: 30.01.2014
Сообщений: 6,575
07.03.2014, 17:58     Программа виснет при переходе в функцию function #7
Цитата Сообщение от Tulosba Посмотреть сообщение
... '\0'
Это опечатка у меня, последний символ должен был быть не '0', а '\0'
Yandex
Объявления
07.03.2014, 17:58     Программа виснет при переходе в функцию function
Ответ Создать тему
Опции темы

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