Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 48
1

Как присвоить значение возвращаемое функцией?

22.09.2013, 22:09. Показов 2411. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
char* abc(int num){
    static char masiv[1];
    masiv[0] = num+'0';
 
    return masiv;
}
main(){
    char *a,*b,*c;
    a = abc(1);
    b = abc(2);
    c = abc(3);
    std::cout<<a<<std::endl;
    std::cout<<b<<std::endl;
    std::cout<<c<<std::endl;
}
программа 3 раза выведет число 3, я понимаю, что это из-за того, что a,b,c просто ссылаются на одну ячейку памяти, но как правильно присвоить и сохранить значения я не знаю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2013, 22:09
Ответы с готовыми решениями:

Как присвоить возвращаемое значение функции переменной?
double sine(int index, int frequency) { return (100*sin(index*frequency)); } вопрос: как...

Значение, возвращаемое функцией (C++)
В общем, задача такая. Написать программу, печатающую все вводимые символы в нижнем регистре....

Указатель на функцию, укзатель на воид и возвращаемое функцией значение
Есть функции, идентичные по функционалу, но возвращающие значения разных типов(сами значения не...

Множество возвращаемое функцией как результат
Помогите пожалуйста с возвратом множества, как результата работы функции. int Cross(){...

16
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
22.09.2013, 22:24 2
ты не поверишь. функция массив не выведет просто так...
да и скажи ты толком что сделать хочешь, я не телепат же
--------------------------------------------------------------
и опять же, массив статический в функциях тем более никто не делает,
это не рационально, вдруг ты захочешь массив большей длины обработать? а исходники например посеял,
или откомпилить нечем?
1
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.09.2013, 22:28 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
char* abc(int num){
    static char masiv[2] = {0};
    masiv[0] = num+'0';
 
    return masiv;
}
int main(){
    char a[2], b[2], c[2];
    strcpy(a, abc(1));
    strcpy(b, abc(2));
    strcpy(c, abc(3));
    std::cout<<a<<std::endl;
    std::cout<<b<<std::endl;
    std::cout<<c<<std::endl;
}
1
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
22.09.2013, 22:33 4
gooseim, смысл так делать? все потроха снаружи... а функция получается для красоты
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.09.2013, 22:34 5
Крюгер, я не говорил, что есть смысл. Я просто привел работающий пример.
0
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 48
22.09.2013, 22:34  [ТС] 6
Крюгер,
этот пример просто шаблон, в функции я использую рекурсию ля этого мне нужен статически массив куда я запиливаю по символу каждую итерацию. Вот хотелось бы узнать как функцией вернуть массив, чтоб он имел тип char,а не указатель char*

gooseim,
Спасибо, хотелось бы узнать есть ли какой то способ сделать это без функций, просто я не думаю что в c++ для решения таких простых задач не предусмотрен какой то обычный стандатрный способ )
0
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
22.09.2013, 22:39 7
gooseim, рабочий говоришь?https://docs.google.com/drawin... =960&h=720
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.09.2013, 22:44 8
Крюгер, это смотря каким компилятором тестить. Codepad съедает такое.
NanoChely
, если честно я вообще не понял какая стоит задача.

Добавлено через 3 минуты
Крюгер, специально для тебя:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstring>
 
char* abc(int num){
    static char masiv[2] = {0};
    masiv[0] = num+'0';
 
    return masiv;
}
int main(){
    char a[2], b[2], c[2];
    std::strcpy(a, abc(1));
    std::strcpy(b, abc(2));
    std::strcpy(c, abc(3));
    std::cout<<a<<std::endl;
    std::cout<<b<<std::endl;
    std::cout<<c<<std::endl;
}
Это должны все съесть.
0
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 48
22.09.2013, 22:47  [ТС] 9
gooseim, твой пример помог и делает то что надо. Я хотел бы узнать, вот в c++ чтоб вернуть массив символов из функции в прототипе функции нужно обязательно ставить звездочку, то есть char*. Я не понимаю для чего? Может ли в C++ функция вернуть char массив, а не char* ?
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
22.09.2013, 22:48 10
может тогда стоит возвращать std::string?
1
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.09.2013, 22:48 11
NanoChely, массив в c++ возвращать нельзя. Можно вернуть std::string например.
1
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
22.09.2013, 22:48 12
gooseim, теперь работает...но опять же ты return забыл
(у меня без него не есть компиль)
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
22.09.2013, 22:49 13
Цитата Сообщение от Крюгер Посмотреть сообщение
но опять же ты return забыл
где?
0
Эксперт С++
516 / 421 / 92
Регистрация: 23.09.2010
Сообщений: 1,165
22.09.2013, 22:50 14
Крюгер, return в main писать не обязательно. Согласно вроде предыдущему стандарту если память не изменяет. В этом ничего не изменилось.
0
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 48
22.09.2013, 22:53  [ТС] 15
gooseim, ага, то есть только указатель на какой то элемент массива можно вернуть да?

Добавлено через 53 секунды
Croessmah, мне не решение задачи нужно, а понять суть, как тут все устроено в c++ )
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2013, 22:55 16
Цитата Сообщение от NanoChely Посмотреть сообщение
Может ли в C++ функция вернуть char массив, а не char* ?
Передача/возврат массива - это всегда операции с указателем на начало массива (массив не передаётсся и не возвращается по значению).
1
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 48
22.09.2013, 23:00  [ТС] 17
alsav22, да, я это теперь понял. привычка с других языков )
0
22.09.2013, 23:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2013, 23:00
Помогаю со студенческими работами здесь

Непонятно выражение "значение, возвращаемое функцией"
Уважаемые господа. Мне немного непонятно выражение &quot;значение, возвращаемое функцией&quot;. Возвращаемое...

Возвращаемое значение функции - указатель на массив. КАК это записать?
Функция заполняет массив. например (кусок проги) .... int mas; int fun() { заполнила...

Тип void как возвращаемое значение функции: что он такое, зачем он нужен, где, когда и как его использовать?
Объясните пожалуйста про Void для оооочень далекого человека. Читаю книгу Шилдта, в принципе всё...

Как проанализировать значение возвращаемое функцией ShellExecute?
Всем здравствуйте. Инструкция int res = ShellExecute(0, L&quot;open&quot;, path.c_str(), NULL, 0,...

Присвоить значение возвращаемое boost::bind
Добой ночи. Хотелось бы знать, как присвоить значение, возвращаемое boost::bind. Есть...

Массив как возвращаемое функцией значение
Подскажите пожалуйста пример функции, которая возвращает массив, спасибо))


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru