int _tmain(int argc, _TCHAR* argv[]) { struct ps ** pHead = new ps *[6] ; for (int i=0; i<6; i++) { pHead[i] = new ps ; pHead[i]->n = i ; pHead[i]->pNext = NULL ; }
ps ** dada = pHead ;
for (int m=0; m<6; m++) { show(&dada[m], m) ; }
system("pause") ; return 0; }
void show(ps **pHead, int m) //我不知道的是,为什么执行这个函数时pHead的表头会往后移 { ps * dd = pHead[m] ; int a = dd->n ; //如果注释掉这行的话就不会出现这种情况 }
[解决办法]
[解决办法] ps ** dada = pHead ;
for (int m=0; m<6; m++) { show(&dada[m], m) ; } void show(ps **pHead, int m) //我不知道的是,为什么执行这个函数时pHead的表头会往后移 { ps * dd = pHead[m] ; int a = dd->n ; //如果注释掉这行的话就不会出现这种情况 }
把for循环中的语句展开就是: for (int m=0; m<6; m++) { //show(&dada[m], m) ; ps **t_pHead=&data[m]; ps *dd =t_pHead[m];// 等同于 data+m + m = &data[2*m] int a=dd->n;// data[2*m]->n }