typedef struct
{
int day;
int month;
string str_name;
char desc[16];
}ceshi_t;
void setOsd(ceshi_t *pOsd)
{
** for(int osd_i = 0; osd_i < 5; osd_i++)**
{
**int day = pOsd[osd_i].day;**
}
}
int main(void)
{
** ceshi_t osd = {0};**
osd.day = 16;
setOsd(&osd);
}
这些星号是什么意思啊
指针指向结构体占用内存后的内存了,虽然你只传了一个结构体指针,运行时执行指针+1操作,根据sizeof(ceshi_t)所占内存数量,即(ceshi_t *)+sizeof(ceshi_t),指向当前(ceshi_t *)指针指向地址+sizeof(ceshi_t)后的内存地址。
你没有定义结构体数组,只定义了一个结构体变量,你把它当作数组来访问肯定会越界。