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

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

Войти
Регистрация
Восстановить пароль
 
NanoChely
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 48
#1

Сохранить значение возвращаемое функцией - C++

22.09.2013, 18:29. Просмотров 253. Ответов 0
Метки нет (Все метки)

Есть 2-е функции. 1-я dectohex() перекодирует десятичный в шестнадцатеричный код и возвращает символьный массив. Все исправно работает. 2-я функция rgbtohex(), с помощью 1-й функции формирует HEX цвет из получаемого RGB.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
char* dectohex(int dec){
    int mod;
    static int i = 0;
    static int index = 0;
    static char heks[3];
 
    i++;
 
    mod = dec%16;
    dec = dec/16;
 
    if(mod==10) heks[index] = 'A';
    else if(mod==11) heks[index] = 'B';
    else if(mod==12) heks[index] = 'C';
    else if(mod==13) heks[index] = 'D';
    else if(mod==14) heks[index] = 'E';
    else if(mod==15) heks[index] = 'F';
    else heks[index] = mod+'0';
 
    if(dec==0) {
        int a;
        char temp1,temp2;
        for(a=0;a<index;a++){
            temp1 = heks[index];
            temp2 = heks[a];
            heks[a] = temp1;
            heks[index] = temp2;
            index--;
        }
        heks[i] = '\0';
        return heks;
    }
 
    index++;
 
    dectohex(dec);
}
 
void rgbtohex(int r, int g, int b){
    char *rH,*gH,*bH;
    rH = dectohex(r);
    gH = dectohex(g);
    bH = dectohex(b);
    if(strlen(rH)==1) rH[1] = rH[0];
    if(strlen(gH)==1) gH[1] = gH[0];
    if(strlen(bH)==1) bH[1] = bH[0];
    cout<<"HEX: #"<<rH<<gH<<bH<<endl<<endl;
}
Проблема заключается в 3-х этих строках:
C++
1
2
3
rH = dectohex(r);
gH = dectohex(g);
bH = dectohex(b);
Т.к. функция dectohex имеет тип char*, то и переменные которые принимают результат функции должны иметь тип char*, насколько я знаю все переменные типы которых имеют звездочку являются указателями. То есть rH,gH,bH просто ссылаются на ячейку памяти и в итоге все эти 3 указателя указывают на одну и туже ячейку и возвращают одно и тоже значение ( то есть последнее сгенерируемое функцией значение ). Объясните как мне все-таки ПРИСВОИТЬ значение? А также как в c++ возвращать из функции массив символов, чтоб он не был указателем.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2013, 18:29     Сохранить значение возвращаемое функцией
Посмотрите здесь:

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

Как присвоить значение возвращаемое функцией? - C++
#include &lt;iostream.h&gt; char* abc(int num){ static char masiv; masiv = num+'0'; return masiv; } main(){ char...

Указатель на функцию, укзатель на воид и возвращаемое функцией значение - C++
Есть функции, идентичные по функционалу, но возвращающие значения разных типов(сами значения не важны). double a() { cout &lt;&lt; 123...

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

Множество возвращаемое функцией как результат - C++
Помогите пожалуйста с возвратом множества, как результата работы функции. int Cross(){ set&lt;int&gt; b; ...

Возвращаемое значение - C++
Как сделать так, что бы в зависимости от подаваемых аргументов, функция возвращала разные значения? Пробовал через шаблоны, но не...

Возвращаемое значение (класс) - C++
class shtraf { public: struct sh { int vel; char number; sh *next; };

Возвращаемое ссылочное значение - C++
int a = 1; int&amp; func(){return a;} void main() { int b = func(); b+=111; cout &lt;&lt; b &lt;&lt; &quot; &quot; &lt;&lt; a; system(&quot;pause&quot;); ...

возвращаемое значение cos() - C++
Всем доброго времени суток. не могу понять почему cos() возвращает такие значения... cout&lt;&lt;&quot;F &quot;&lt;&lt;cos(90*M_PI/180.0)&lt;&lt;endl; ...

Возвращаемое значение функции - C++
void tokenize(string str_translate){ char char_translate; strcpy(char_translate, str_translate.c_str()); // string to char* ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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