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

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

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

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

23.01.2014, 19:42. Просмотров 303. Ответов 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());
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 19:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ? (C++):

array char* to char* (значения массива указателей в один указатель) - C++
Как сложить(или вывести в формате 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 char* string и константные значения - C++
Робот может перемещаться в 4 направлениях c-Север, u- Юг, z- Запад, v- Восток ипринемать 3 цифровые команды 0-продолжать движение 1 на...

Типы данных - где нужно использовать char, а где unsigned char? - C++
Всем привет! У меня вопрос, искал ответ на него, но безуспешно. Вопрос следующий: есть два типа char и unsigned char. Я понимаю, что в...

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

6
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
23.01.2014, 19:47 #2
char* - это указатель на строку. Используется для передачи\возврата строки. Вместо этого можно использовать string из string.h.
1
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
23.01.2014, 19:50 #3
А что значит обычными переменными?) Не указателями, имеешь ввиду? Если да, то наверное потому, что время это все таки число, а имя - строка, а char* как раз можно как строку интерпретировать) И нюансами это назвать трудно - дело в понимании того, что делаешь.
1
Lers
13 / 13 / 3
Регистрация: 27.05.2012
Сообщений: 203
23.01.2014, 19:54  [ТС] #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* как раз можно как строку интерпретировать) И нюансами это назвать трудно - дело в понимании того, что делаешь.
Я понимаю, просто когда буду сдавать лабу, преподы очень придирчивы именно к словам, даже если видят что это я понимаю, но не могу сразу объяснить "как по учебнику". Поэтому спрашиваю у вас, поэтому все переварю и отвечу))
0
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
23.01.2014, 20:10 #5
Lers, в первом случае функция принимает строку, по-этому и char*.
Во втором строка возвращается. Можно заменить на string, но тогда нужно будет всё менять.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
23.01.2014, 20:53 #6
Цитата Сообщение от Arkaniy Посмотреть сообщение
string из string.h.
string находится в хедере string.
string.h - сишный хедер, который содержит функции для работы со строками (strlen, strcat, etc)
1
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
23.01.2014, 21:01 #7
MrGluck, спасибо за поправку, не знал этого.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2014, 21:01
Привет! Вот еще темы с ответами:

Ошибка при присваивании массиву 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()...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
23.01.2014, 21:01
Ответ Создать тему
Опции темы

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