Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по мелочи 
:(
    Опции темы
Syltan
Дата 28.9.2009, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 301
Регистрация: 31.8.2009

Репутация: -1
Всего: -2



Есть один момент, немного не понятный.
Скажите, почему,если написать так:

Код

char *pn = new char[strlen(temp) ];


в этой программе:
Код


#include <iostream>
#include <cstring>
using namespace std;
char *getname();

int main()
{
    setlocale(0,"");
    char * name;
    name = getname();
    cout<<name<<" at "<<(int*)name<<endl;
    delete [] name;
    name = getname();
    cout<<name<<" at "<<(int*)name<<endl;
    delete [] name;
    cin.ignore();
    cin.get();
}

char *getname()
{
    char temp[80];
    cout<<"ENTER last name: ";
    cin>>temp;
    char *pn = new char[strlen(temp) +1];
    strcpy(pn,temp);
    return pn;
}


Программа выдаст также саммо результат, но ещё вдобавок ко всему выдаст табличку исключения?Почему обязательно нужно писать "+1"? Ещё вопрос, зачем используется приведение к указателю на инт:

Код

(int*)name


PM MAIL   Вверх
Alca
Дата 28.9.2009, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50



типа для '\0'


--------------------
PM WWW ICQ Skype Jabber   Вверх
ИванМ
Дата 29.9.2009, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Цитата(Syltan @  28.9.2009,  23:26 Найти цитируемый пост)
Почему обязательно нужно писать "+1"? 

Потому что строка в C++ заканчивается нулем. Если не писать "+1", то нулю будет некуда деваться.
Цитата(Syltan @  28.9.2009,  23:26 Найти цитируемый пост)
зачем используется приведение к указателю на инт:

Для того, чтобы отобразить адрес строки. Если бы не приводилось к инту, на экране бы отобразился не адрес, а сама строка (char*)
PM MAIL   Вверх
andrew_121
Дата 29.9.2009, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(ИванМ @  29.9.2009,  00:20 Найти цитируемый пост)
Потому что строка в C++ заканчивается нулем

В Си


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
ИванМ
Дата 29.9.2009, 21:50 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



andrew_121, а разве в C++ это отменили?
PM MAIL   Вверх
bsa
Дата 29.9.2009, 22:07 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(ИванМ @  29.9.2009,  21:50 Найти цитируемый пост)
andrew_121, а разве в C++ это отменили? 
В С++ есть std::string и std::wstring, которыми пользоваться гораздо удобней и безопасней. А то, о чем речь идет называется строкой в стиле Си или просто Си-строкой.

PM   Вверх
ИванМ
Дата 30.9.2009, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



bsa, понял smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.3261 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.