指针的赋值问题?

图灵转世 2003-03-13 10:37:05
TCHAR * pVarBlock, * pVarBeg, * pVarEnd, * pVarName ;
pVarBlock = GetEnvironmentStrings ();

pVarBloc是TCHAR *
GetEnvironmentStrings ();返回的是LPVOID
两种类型不一样,为何不需要转换?
...全文
19 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lifanxi 2003-03-13
  • 打赏
  • 举报
回复
怪!
我查了一个MSDN,上面说GetEnvironmentStrings()的返回值是LPVOID.
但查了一下GetEnvironmentStrings函数的声明,它的返回值是LPSTR型的。
不知是不是MSDN有问题。
如果是LPSTR型的,那给TCHAR * 当然没问题。
LPVOID是typedef的产物,不是类,所以我上面推论说它有类型转换函数是错的。
chinajiji 2003-03-13
  • 打赏
  • 举报
回复
void* ---> other Type* (implicit conversion permitted by C NOT in C++)

other Type * ---> void * (implicit conversion permitted by C and C++ )
lifanxi 2003-03-13
  • 打赏
  • 举报
回复
照楼上几位的意思
int * p = malloc(100 * sizeof(int));
也是合法的了?
好像得强制类型转换吧。
int i;
void * p = &i;倒是可以的。
我猜想可能LPVOID类型定义了某些类型转换的函数吧,手头没有VC也没MSDN就只能乱猜了。还请知道的朋友指点一下!
北极猩猩 2003-03-13
  • 打赏
  • 举报
回复
LPVOID就是void*它可以接受任何类型的指针
magicblue 2003-03-13
  • 打赏
  • 举报
回复
void stand for nothing rather than anything in C++
cool_ice 2003-03-13
  • 打赏
  • 举报
回复
LPVOID实际上是void*,在c++中void代表任何类型!

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧