2014-01-17 2 views
-1

У меня есть функция, которая принимает на структуру указателей в качестве параметра и возвращает it.ın функции я хочу другую функцию заполнить pointerd памяти кодом pointer.my являетсяструктура указатель в качестве параметра и возврата

struct my_struct{ 
unsigned char** ps; 
unsigned long* pl; 
}; 

struct* function(struct* param){ 

    another_func(param->ps,param->pl)//function takes pointers as parameters and fills them up 
    return param; 
} 

int main{ 
my_struct *p; 
p=function(p); 
} 

//definiton of another func is; 

void another_func(unsigned char**,unsigned long *){...} 

EDIT: это дает нарушение

+0

В чем вопрос? –

+0

это дает ошибку.? – barp

+0

Какая ошибка вы получаете? –

ответ

1

доступа ошибка Из того, что вы выложили до сих пор пытаются вместо этого:

typedef struct my_struct 
{ 
    unsigned char** ps; 
    unsigned long* pl; 
} my_struct; 

void another_func(unsigned char**,unsigned long *) {...} 

my_struct* function(my_struct* param) 
{ 
    another_func(param->ps,param->pl) 
    return param; 
} 

int main() 
{ 
    my_struct *p; 
    my_struct q = {NULL,NULL}; 
    unsigned long pl = 10; 
    q.ps = malloc(pl * sizeof(char*)); 
    q.pl = &pl; 
    p=function(&q); 
    return 0; 
} 

отредактирован после беседы

+0

, она дает ошибку из переданного буфера another_function() в small.it, потому что мы назначили статическую структуру в main.for Дистанционное распределение я могу выделить буфер – barp

+0

Я не видел, что в моем хрустальном шаре, если вы не показываете всю необходимую информацию, это невозможно. например что находится в another_func –

+0

нет ничего «статического» в том, что я написал, где-то вам нужно выделить то, что 'ps' и' pl' указывают на использование malloc. например 'q.ps = malloc (10 * sizeof (char *)); ps и pl - указатели, поэтому они могут содержать только адрес где-то. вам нужно выделить пространство, чтобы ps и pl указывали на него. Кстати, почему вы не передаете my_struct * в another_func вместо ps и pl? –

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