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

Возврат указателя на массив из функции - C++

Восстановить пароль Регистрация
 
Serbis
3 / 3 / 2
Регистрация: 13.07.2012
Сообщений: 120
08.02.2016, 16:31     Возврат указателя на массив из функции #1
День добрый, коллеги по цеху. Не откажите в нужде java программисту в познаниях нативного кода. Запутался я совсем в указателях. Как правильно использовать указатель из функции что бы передать в массив данные. Коряво выразился, но по коду что нужно сделать думаю понятно. Берем строку, зашифровываем, заносим в массив, потом расшифровываем полученный ранее массив и выводим. Сами алгоритмы протестированы и просто подогнаны с java.

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
char * encrypt(char input[], char key[]) {
    //
        // Очень много кода
        //
    return result;
}
 
char * decrypt(char input[], char key[]) {
    //
        // Очень много кода
        //
    return result;
}
 
int main() {
    char inp[6] = "hello";
    char key[6] = "123";
 
    char enc[] = { * encrypt(inp, key) };
    char  res[] = { * decrypt(enc, key) };
 
    cout << res << endl;
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2016, 16:31     Возврат указателя на массив из функции
Посмотрите здесь:

Возврат структуры из функции C++
C++ Возврат указателя на строку из фукнции
Возврат указателя на массив из функции C++
Возврат массива из функции C++
C++ Возврат функцией указателя на функцию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2135 / 968 / 223
Регистрация: 30.11.2013
Сообщений: 3,236
08.02.2016, 16:48     Возврат указателя на массив из функции #2
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
49
#include <iostream>
using namespace std;
 
//////////////////////////////////////////////////////////////////////
struct Key
{
    int _value;
};
//////////////////////////////////////////////////////////////////////
template<typename T, size_t N>
void encrypt(T(&a)[N], const Key& key )
{
    for(auto&& i : a)
    {
        i += key._value;
    }
}
//////////////////////////////////////////////////////////////////////
template<typename T, size_t N>
void decrypt( T( &a )[N], const Key& key )
{
    for(auto&& i : a)
    {
        i -= key._value;
    }
}
//////////////////////////////////////////////////////////////////////
template<typename T, size_t N>
void show( T( &a )[N])
{
    for(auto&& i : a)
    {
        cout << i;
    }
    cout << endl;
}
//////////////////////////////////////////////////////////////////////
int main()
{   
    Key key = {19};
    
    char text[] = "privet kak dela";
 
    show( text );
    encrypt( text, key );
    show( text );
    decrypt( text, key );
    show( text );
}
nd2
1033 / 772 / 260
Регистрация: 29.01.2016
Сообщений: 2,413
09.02.2016, 03:21     Возврат указателя на массив из функции #3
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
char * encrypt(char input[], char key[]) {
    
    size_t sizeStr = strlen(input);
    size_t sizeKey = strlen(key);
    char* result = new char[sizeStr + 1];
    strcpy(result, input);
    //
        // Очень много кода
        //
    return result;
}
 
char * decrypt(char input[], char key[]) {
    
    size_t sizeStr = strlen(input);
    size_t sizeKey = strlen(key);
    char* result = new char[sizeStr + 1];
    strcpy(result, input);
    //
        // Очень много кода
        //
 
    return result;
}
 
int main()
{
    char inp[6] = "hello";
    char key[6] = "123";
    
    char* enc = encrypt(inp, key);
    char* res = decrypt(enc, key);
 
    cout << res << endl;
 
    delete [] enc;
    delete [] res;
    return 0;
}
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6168 / 2897 / 282
Регистрация: 04.12.2011
Сообщений: 7,704
Записей в блоге: 3
09.02.2016, 11:27     Возврат указателя на массив из функции #4
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
#include <iostream> 
#include <string>//это лучше
using namespace std;
 
char byteCodingXor(char a, char ckey)
{
return a^ckey;
}
 
string xSorry(string srcStr, char ckey)
{
string retStr="";
for(size_t i=0; i<srcStr.length(); ++i)
{
retStr+= byteCodingXor(srcStr[i], ckey);
}
return retStr;
}
 
void main()
{   
string srcStr="Sorry, I am so buzzy, I will be xSorred soon!";
cout<<"Original is: "<<srcStr<<endl;
string xOrStr=xSorry(srcStr, 'x');
cout<<"xOrEd is:\n________________________\n: "<<xOrStr<<endl;
xOrStr=xSorry(xOrStr, 'x');
cout<<"___________________\nunXOrEd is: "<<xOrStr<<endl;
cout<<endl;
system("pause");    
}
Yandex
Объявления
09.02.2016, 11:27     Возврат указателя на массив из функции
Ответ Создать тему
Опции темы

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