Mam taki oto kod:
// struktura z danymi
typedef struct {
unsigned int id;
unsigned char data[3];
} s_data;
// bufor
struct buf_st {
unsigned int in;
unsigned int out;
s_data buf[CRxBUF_SIZE];
};
static struct buf_st crxbuf = { 0, 0, };
#define SIO_CRxBUFLEN ((unsigned short)(crxbuf.in - crxbuf.out))
//funkcja ma ustawić wskaźnik na następny element w buforze
int PGet (s_data *pd) {
struct buf_st *p = &crxbuf;
if (SIO_CRxBUFLEN == 0) //pusty bufor
return (-1);
pd = &(p->buf [(p->out++) & (CRxBUF_SIZE - 1)]);
return 0;
}
W main.c chce wyświetlić dane z bufora, tworze wskaźnik pdata i przekazuje go do funkcji PGet, jednak ta funkcja nie ustawia go poprawnie, mimo że wskaźnik pd wewnątrz działa poprawnie.
Jak należy wywołać funkcję PGet(pdata) czy tak PGet(&pdata) czy jeszcze inaczej ?
main.c:
s_data *pdata;
PGet(pdata);
//PGet(&pdata); -też nie działa
printf("%x %d %d %d \n", (*pdata).id, (*pdata).data[0], (*pdata).data[1], (*pdata).data[2]);