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

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

Войти
Регистрация
Восстановить пароль
 
Lers
12 / 12 / 3
Регистрация: 27.05.2012
Сообщений: 203
#1

Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ? - C++

23.01.2014, 19:42. Просмотров 292. Ответов 6
Метки нет (Все метки)

Вопрос такой, почему в методе setnamedisc нужно использовать char *s для установки значения, а при возвращении значения в методе getnamedisc() тип метода должен быть char*. а в методах sethours и gethours можно обойтись обычными переменными? Хочу просто знать эти нюансы)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Disc :: setnamedisc(char *s)
{
  strcpy(namedisc,s);
}
 
char* Disc :: getnamedisc()
{
  return namedisc;
}
 
void Disc :: sethours(int h)
{
  hours=h;
}
 
int Disc :: gethours()
{
  return hours;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Disc
{
  private:
    char namedisc[20]; //название дисциплины
    int hours;         //количество часов
 
  public:
    void setnamedisc (char s[20]);   //установить название дисциплины
    char* getnamedisc();          //получить название дисциплины
    void sethours (int h);        //установить кол-во часов
    int gethours();               //получить кол-во часов
    void vvod();             //заполнить объект
    void vivod();             //вывести объект
};
C++
1
2
3
4
5
6
7
a.setnamedisc("Математика");
  char *s1;
  s1=a.getnamedisc();
  printf("Название дисциплины: %s",s1);
 
  a.sethours(20);
  printf("\nКоличество часов: %d\n",a.gethours());
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 19:42     Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ?
Посмотрите здесь:

Почему не выдает значения char с таблицы? - C++
Почему не выдает значения char с таблицы? #include <iostream> #include <windows.h> #include <conio.h> #include <clocale> using...

8-битовый тип signed char может представлять значения от -128 до 127 - C++
8-битовый тип signed char может представлять значения от -128 до 127 Кто может растолковать как это понимать, от 128 до 127 -...

Ошибка при присваивании массиву char значения - C++
В общем, требуется присвоить массиву чаров одно из нескольких значений (в зависимости от значения аргумента функции) и вывести этот массив...

Минимальные и максимальные значения для типов: char .... - C++
Каковы на вашей машине минимальные и максимальные значения для следующих типов:char int double ?. #include <iostream> #include...

Ошибка при переводе значения из переменной char в переменную wchar_t - C++
День всем добрый! Подскажите, пожалуйста, что я делаю не так? Я пытаюсь использовать функцию MultibyteToWindeChar, но она не работает:...

Как использовать тип char в конструкции switc-case? - C++
При моем вводе ,выводит "Error : Not Found! . Помогите пожалуйста! #include <iostream> using namespace std; void greeting()...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
23.01.2014, 19:47     Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ? #2
char* - это указатель на строку. Используется для передачи\возврата строки. Вместо этого можно использовать string из string.h.
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 665
Завершенные тесты: 1
23.01.2014, 19:50     Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ? #3
А что значит обычными переменными?) Не указателями, имеешь ввиду? Если да, то наверное потому, что время это все таки число, а имя - строка, а char* как раз можно как строку интерпретировать) И нюансами это назвать трудно - дело в понимании того, что делаешь.
Lers
12 / 12 / 3
Регистрация: 27.05.2012
Сообщений: 203
23.01.2014, 19:54  [ТС]     Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ? #4
Цитата Сообщение от Arkaniy Посмотреть сообщение
char* - это указатель на строку. Используется для передачи\возврата строки. Вместо этого можно использовать string из string.h.
Это да, я знаю. Вопрос, почему? Почему обязательно char *s.
почему
C++
1
2
3
4
void Disc :: setnamedisc(char *s)
{
  strcpy(namedisc,s);
}
C++
1
2
3
4
char* Disc :: getnamedisc()
{
  return namedisc;
}
И почему обязательно char* Disc.
Char* обязательна потому что возвращаю адрес строки(можно ли написать string Disc ?)
а в первом методе char *s, потому что я копирую строку, а не 1 символ, поэтому использую указатель?

Добавлено через 1 минуту
Цитата Сообщение от monolit Посмотреть сообщение
А что значит обычными переменными?) Не указателями, имеешь ввиду? Если да, то наверное потому, что время это все таки число, а имя - строка, а char* как раз можно как строку интерпретировать) И нюансами это назвать трудно - дело в понимании того, что делаешь.
Я понимаю, просто когда буду сдавать лабу, преподы очень придирчивы именно к словам, даже если видят что это я понимаю, но не могу сразу объяснить "как по учебнику". Поэтому спрашиваю у вас, поэтому все переварю и отвечу))
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
23.01.2014, 20:10     Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ? #5
Lers, в первом случае функция принимает строку, по-этому и char*.
Во втором строка возвращается. Можно заменить на string, но тогда нужно будет всё менять.
MrGluck
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
23.01.2014, 20:53     Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ? #6
Цитата Сообщение от Arkaniy Посмотреть сообщение
string из string.h.
string находится в хедере string.
string.h - сишный хедер, который содержит функции для работы со строками (strlen, strcat, etc)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2014, 21:01     Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ?
Еще ссылки по теме:

Std::fstream почему функция write принимает параметр char* а не unsigned char* (аля byte*) ? - C++
Ну собственно сабж... std::fstream fs; fs.write((char*)..) В случае бинарного потока я допустим пишу байты функцией write, как...

Смысл const char* и о том, какой тип строк лучше использовать - C++
Я никак не могу понять смысла const char*. Это строка в стиле C, я знаю. Но чем эта запись отличается от char*? Или вообще, просто char?...

-1.#IND при возвращении значения функции - C++
#include<iostream> using namespace std; float res=0; float number() { char c=cin.get(); if(c>='0' && c<='9') { ...

Почему тип char не может делать вот так += - C++
Я хочу из входного текста получить другой текст. Например: ТЕКСТ, а я хочу получить ТСКЕТ то есть предложение или слово только...


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

Или воспользуйтесь поиском по форуму:
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
23.01.2014, 21:01     Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ? #7
MrGluck, спасибо за поправку, не знал этого.
Yandex
Объявления
23.01.2014, 21:01     Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ?
Ответ Создать тему
Опции темы

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