读书人

结构体代码没看懂,该怎么解决

发布时间: 2012-02-10 21:27:42 作者: rapoo

结构体代码没看懂

C/C++ code
typedef struct siblings {char sibname[20];char gender;}sib;typedef struct employee {char empid[10];char empname[20];char status;float sal;sib ** s;}emp;typedef struct stackemp {int size;int ptrPos;emp ** e;}stack;function myfunction(stack * s) {(s->e[s->size]) = (emp *) malloc(sizeof(emp)); //e[s->size]是什么意思?e是指向指针的指针,哪来下标?(s->e[s->size]->s) = malloc(sizeof(s->e[s->size]->s[0]));  // s是结构体emp的指针(s->e[s->size]->s[0]) = malloc(sizeof(sib)); // s[0]哪来的?(s->e[s->size]->s[1]) = malloc(sizeof(sib)); 


[解决办法]
(s->e[s->size]) = (emp *) malloc(sizeof(emp)); //e[s->size]是什么意思?e是指向指针的指针,哪来下标?
emp ** e;e是指向指针的指针,可以看成二维数组
[解决办法]
指针和数组可以相互转化,e[s->size]相当于*(e+s->size),得到的是一个指向emp的指针
s->e[s->size]->s 得到的是emp中的s,即指向 指向sib的指针 的指针
s->e[s->size]->s[0] 得到的是指向sib的指针

读书人网 >C++

热点推荐