C语言指针强制类型转换 指针类型强转求助?
指针类型强转求助?
(CLogonDlg*)m_pWnd=m_2;在C中可以这样写,有些C编译器也允许这样写。VC报告了一个错误。
常规指针类型强制是将等号右侧的表达式强制转换为结果所需的类型(即等号左侧的变量类型)。所以:
mupwnd=(void*)muwnd
muwnd=(CLogonDlg*)mupwnd
在任何C/C编译器中,都不会报告任何操作(当然,CLogonDlg需要正确解释)。
因为Mupwnd类型是void*,所以可以这样写:
Mupwnd=wuwnd
也就是说,任何指针变量类型都可以直接分配给void*类型,而不必强制进行类型转换。
相反,void*类型只能通过强制类型转换转换为其他指针变量类型:
m_Wnd=(CLogonDlg*)m_PWnd
C语言中,函数指针的强制类型转换有什么作用?
(unsigned*)0x00100将0x00100转换为指针
因为unsigned*是指针类型
例如,(int)3.1415是整数部分。它不是被转换成变量,而是一个常量。3
void*指针可以转换为任何类型的指针。例如,(int*)(void*)pint arr[n][M]int(*P)[M]=arr假设PV是一个void指针P=(int(*[M])PV
C语言指针强制类型转换 c++智能指针 智能指针什么时候不能用
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。