跟了两天知道异常在什么地方了,可是不知道如何解决,
跟了两天知道错误在什么地方了,可是不知道怎么解决,求助。
//错误代码模拟:
//希望大家能指点一下,我是真的看不懂了
// 2412451.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "iostream"
struct ps
{
int n ;
struct ps *pNext ;
};
void show(ps **pHead, int m) ;
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
}
//错误代码模拟:
//希望大家能指点一下,我是真的看不懂了
// 2412451.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "iostream"
struct ps
{
int n ;
struct ps *pNext ;
};
void show(ps **pHead, int m) ;
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
}