C++结构体指针声明问题。

typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;
static PMSG pmsg ;
pmsg = (PMSG)malloc (cLinesMax * sizeof (MSG)) ;
for (i = cLinesMax - 1 ; i > 0 ; i--)
{
pmsg[i] = pmsg[i - 1] ;

## 问题:pmsg明明声明为结构体指针,为何在这里可以当做结构体数组指针 使用啊。谢谢大家帮助解惑。

}

6个回答

pmsg = (PMSG)malloc (cLinesMax * sizeof (MSG)) ;
这一步就给指针分配了空间大小
使得你可以以数组的方式访问指针空间内的每一个地址

没问题,表明指针类型,就像你声明char*当字符数组一样

把MSG想象成 int
PMSG就是 int*

数组指针指向这个数组的首地址,即数组第一个元素的地址,所以某种结构体指针和构体数组指针没有本质区别,只是使用形势不同。

“数组指针指向这个数组的首地址,即数组第一个元素的地址,所以某种结构体指针和构体数组指针没有本质区别,只是使用形势不同。”
如果这么说的话,我下面的代码对吗?
int p;
p=(int
)mallocate(10*sizeof(int);
P之前是一个整形指针,经过这样的代码就可以变成一个数组指针了吗?

看下C语言的书,记得有一节专门讲了数组和指针,二维数组和指针。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问