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

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

Войти
Регистрация
Восстановить пароль
 
NanoChely
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 48
22.09.2013, 18:29     Сохранить значение возвращаемое функцией #1
Есть 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++ Множество возвращаемое функцией как результат
C++ Возвращаемое значение функции
Возвращаемое значение C++
C++ Возвращаемое значение функции
Как присвоить значение возвращаемое функцией? C++
C++ Возвращаемое значение делигата
Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). C++
Указатель на функцию, укзатель на воид и возвращаемое функцией значение C++
C++ Значение, возвращаемое функцией (C++)
Непонятно выражение "значение, возвращаемое функцией" C++
Template возвращаемое значение C++

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

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

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