У меня-структура MY_TYPE
:передачи по ссылке и присвоить значение указателя на указатель структуры
struct MY_TYPE {
boolean flag;
short int xyz;
};
У меня есть другая-структура MY_DATA
который имеет поле с типом указателя на приведенные выше структуры:
struct MY_DATA {
MY_TYPE *m_type;
double value;
};
у меня есть функция, которая принимает указатель на указательMY_DATA
в качестве параметра:
getData(struct MY_DATA **m_data) {
// create a MY_TYPE pointer & assign value to its field
struct MY_TYPE *m_type_tmp = malloc(sizeof(struct MY_TYPE));
m_type_tmp -> xyz = 123;
// I try to assign a value to the MY_TYPE field of m_data,
// there is no compiler error, but run time error "bad access"
(** m_data).m_type = m_type_tmp;
}
Я называю выше функции по:
struct MY_DATA *data;
get_data(&data);
компилятор ничего не жалуюсь, но когда запускаю мой код, я получаю «Bad доступа» на последней строке кода функции get_data(...)
, как же?
Как вы называете эту функцию? Узнайте, как создать [Минимальный, ** Полный ** и Подтверждаемый пример] (http://stackoverflow.com/help/mcve). –
Когда вы вызываете 'get_data', где находится переменная' data' point? Вы * сделаете * заставляете его указывать где-то действительным до того, как вы назовете 'get_data'? Как вызов 'malloc' и назначение возвращаемого указателя на' data'? Или вы должны называть 'malloc' для структуры' MY_DATA' в функции 'get_data'? Наконец, 'get_data' или' getData'? –
Кроме того, и немного подбирать, технически C не имеет доступа к ссылке. Его можно эмулировать *. :) –