У меня есть структура, называемая складом, и общий связанный список, и каждый элемент указывает на структуру хранилища.Распределение памяти для функционального указателя
typedef struct linked{
char type;
void * item;
struct linked * next;
struct linked * prev;
}LinkedList;
typedef struct warehouse{
char * name;
float volume;
float (* getPrice) (void * S);
float (* getTotalDollarAmount)(void * S);
}house_t;
Когда я попытался получить getPrice
функцию точки указатель на функцию float price (void *S)
void menu (LinkedList *house){
char *c;
float num;
c = (char*)malloc(sizeof(char)*10);
LinkedList *i;
i = (LinkedList*)malloc(sizeof(LinkedList);
house_t *sk;
sk = (house_t *) malloc(sizeof(house_t));
//i->item = (house_t *) malloc(sizeof(house_t));
scanf("%c", c);
((house_t*)i->item)->getPrice = price;
sk=findhouse(house, c);
num = ((house_t*)i->item)->getPrice(sk);
printf("%f",num);
}
меня плохая ошибка доступа. Поскольку каждый раз, когда я получал плохую ошибку доступа, это было потому, что я не выделял память для чего-то. Но мне нужно выделить память для указателя функции? Если да, то как?
Вот некоторый код
float price (void *S)
{
return ((house_t*)S)->volume;
}
Это не выглядит, как вы выделили память для 'item' не так ли? Можете ли вы показать нам больше кода инициализации? – RageD
Ваша ошибка кажется очевидной или вам нужно поместить другую информацию. –
Я попытался выделить память для элемента с помощью 'i-> item = (house_t *) malloc (sizeof (house_t))', но получил плохой доступ для этой строки , – otchkcom