У меня есть союз объявил, как:Как передать член союза со ссылкой
typedef union {
mpls_vpls_t Vpls_dat; //typedef struct
mpls_vpws_t Vpws_dat; //typedef struct
}ser_cache_t;
и я выделить память для него:
ser_dat_ch = calloc(LABEL_T_CNT,sizeof(ser_cache_t));
if (ser_dat_ch == NULL)
return ERROR;
в то время как static ser_cache_t *ser_dat_ch = NULL;
глобальна.
Теперь я хочу, чтобы заполнить мой союз с данными и, следовательно, я wantto передать указатель на него к функции, как:
rv = switch_mpls_vpws_data_get(lab, &ser_dat_ch->Vpws_dat[lab]);
Но вот компилятор орет: выражение должно иметь указатель на объект типа почему так, не будет &ser_dat_ch->Vpws_dat[lab]
решить по адресу, который я ищу?
Что такое 'mpls_vpws_t'? Если это не массив typedef, вы, очевидно, не можете использовать 'Vpws_dat [lab]'. Возможно, вы имели в виду '& ser_dat_ch [lab] .Vpws_dat' –
@ M.M Обе структуры являются' typedef struct' – cerr
Вы не можете. C не поддерживает передачу по ссылке. Но вы можете передать указатель на союз (он же его адрес). См. [Ask], укажите [mcve]. Вы также хотите прочитать о преувеличении оператора. – Olaf