hur.cn - 华软网

 热门搜索

VC6中结构体指针变量,给其它变量赋值不能用??? 急呀!

  作者:未知    来源:网络    更新时间:2011/6/25
typedef struct {
unsigned int  RecordID;
unsigned int  NKFileNUM;
unsigned int  NKFileWriteNUM;
unsigned int  NKAllByte;
unsigned char TagFKFlag;
unsigned char PrintNKFlag;
unsigned char SendStopFlag;
}SeekBody_T; 


SeekBody_T *pSeekBody=NULL; //全局变量

void SeekInit()
{
pSeekBody=(SeekBody_T*)malloc(sizeof(U8)*(60*sizeof(SeekBody_T)));

}

void SeekFunc()
{
unsigned int a = 0;
a = pSeekBody[3].RecordID;//当前pSeekBody[3].RecordID值等于4

//这条语句执行后a的值仍然是0

}

请问这是为什么呢? 
---华软 网友回答---
如果你确定pSeekBody[3].RecordID的值为4,理论上是不可能的,
将结构定义之前与之后加上 #pragma pack(1) 与 #pragma pack() 再试下吧
---华软网友回复---
这个不大可能吧。。

只是个赋值,就不行>?

我觉得你该看错了。。

或者你可以尝试下整个工程重新编译下看看。
---华软网友回复---
谢谢您,我试了一下,还是不行。
在二进制下查看是这样的
00FAE355   mov         ecx,dword ptr _pSeekBody (032b93b0)[eax]

他使用_pSeekBody来进行的操作,_pSeekBody是VC自动生成的,是指向pSeekBody的指针,所以就不正确了
但我不知道如何改.
---华软网友回复---
//当前pSeekBody[3].RecordID值等于
LZ是如何判断当前的值的,你是赋值了还是设了断点
---华软网友回复---
我是设置断点查看的。
---华软网友回复---
那这样写会怎么样呢
pSeekBody[3].RecordID = 4;
unsigned int a = 0;
a = pSeekBody[3].RecordID;//当前pSeekBody[3].RecordID值等于4
---华软网友回复---
这是不可能发生的,当前pSeekBody[3].RecordID值一定不等于4
---华软网友回复---
我试了一下,这样写也不好使,他依然是5 。

那这样写会怎么样呢
pSeekBody[3].RecordID = 5;

---华软网友回复---
我写错了, 依然是4, 修改不了
---华软网友回复---
我已经改好了, 是extern 的声明不正确      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。