View类中用指针引用Doc类的一个结构变量成员的问题在View类中引用Doc类的一个结构变量中的成员值在Doc类中 有如下结构定义: typedef struct tagGdsT{
WORD wT; //
float fNp;
DWORD dwB;
float fNv;
}GdsT;
GdsT *pGdsT;已经pGdsT=new GdsT[800];
然后分别赋值给GdsT[800]现在的问题是如何在View类中引用GdsT中的wT呢?
在View类中:
for(int i=0;i<800;i++)
{
//
//<---这个循环体中依次用pDoc指针得到pGdsT->wT的值呢?
}试过((pDoc->pGdsT)+i)->wT 的用法,结果不对头。
感觉指针除了增加一个GdsT地址增量之外,还自动增加了一个 循环变量i的值,很是奇怪。
具体怎么写呢?
WORD wT; //
float fNp;
DWORD dwB;
float fNv;
}GdsT;
GdsT *pGdsT;已经pGdsT=new GdsT[800];
然后分别赋值给GdsT[800]现在的问题是如何在View类中引用GdsT中的wT呢?
在View类中:
for(int i=0;i<800;i++)
{
//
//<---这个循环体中依次用pDoc指针得到pGdsT->wT的值呢?
}试过((pDoc->pGdsT)+i)->wT 的用法,结果不对头。
感觉指针除了增加一个GdsT地址增量之外,还自动增加了一个 循环变量i的值,很是奇怪。
具体怎么写呢?
/////////不知道为什么会这样
针除了增加一个GdsT地址增量之外,还自动增加了一个 循环变量i的值,很是奇怪。高手指点一下
WORD wT[800]; //
float fNp[800];
DWORD dwB[800];
float fNv[800];
来操作就正常!不知道是不是字节对齐问题?
或改过?(如是Rebuild All)不应该是字节对齐的问题
#pragma pack(push, 1)
#pragma pack(pop)
在doc类构造函数中
CGlook703Doc::CGlook703Doc()
{
pGdsTd=new GdsTd[1500];}
在另外的doc类函数中
SetFilePointer(hFile1,100,0,FILE_BEGIN); //hFile 是已经打开的文件句柄
ReadFile(hFile,pGdsTd,14*800,&dwRead,NULL);
就是这样!但是pDoc->pGdsTd[i].wT 或 ((pDoc->pGdsT)+i)->wT 或(pGdsT+i)->wT 就是不得!
wT中的内容竟然是 0X CD CD !
好像根本没有读入pGdsTd的内存块!但是若用WriteFile(hFile2,pGdsTd,14*800,&dwRead,NULL); //hFile2是用来试验的写入文件句柄来验证pGdsTd内存块中的内容的时候却又发现写入磁盘的文件完全正确!怪啊!!
谁能指点一二?——用数组也能解决问题,
但是我想知道问题何在?!
typedef struct tagGdsT{
WORD wT; //
float fNp;
DWORD dwB;
float fNv;
} GdsT;
GdsT *pGdsT;#pragma pack()就是编译器字节对齐问题!