2016-11-11 4 views
0

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

void function(unsigned char p[4][4], unsigned char x, unsigned char* arr[4]) { 
    unsigned char result; 
    for (int ii=0;ii<4;ii++) 
    { 
     result= p[ii][1] - p[ii][2] + p[ii][0]*x + p[ii][3]*4; 
     *arr[ii]=result; 
    } 
unsigned char function2(unsigned char p[4][4], unsigned char x, unsigned char y) { 
    unsigned char arr[4]; 

    function(p, y, arr); 
    ret= function3(arr, x); 
    return ret; 
} 

Цель состоит в том, чтобы изменить значение вектора arr в function, для того, чтобы использовать его в function3, который не имеет ничего общего с function. Составитель говорит, что:

не может преобразовать «неподписанные символ *» до «неподписанные символ **» для аргумента «3» к «ничтожной функции (неподписанные символ (*) [4], неподписанные символ, неподписанные char **)

Любая помощь приветствуется!

ответ

0

Я думаю, вы можете просто массив пасс как указатель (без указателя на массив):

void function(unsigned char p[4][4], unsigned char x, unsigned char * arr) { 
    unsigned char result; 
    for (int ii = 0; ii < 4; ii++) 
    { 
     result = p[ii][1] - p[ii][2] + p[ii][0] * x + p[ii][3] * 4; 
     arr[ii] = result; 
    } 
} 

Я думаю, что это самый простой способ.

+0

Отлично! Это сработало! Хороший ответ, спасибо! @Unick – Kortatu

Смежные вопросы