void指针及指针的多次赋值的理解

1、void指针的类型转换

int A::functionCommamd(const DWORD _from,const DWORD _to,const DWORD Event_type,void * _data,void* _ret)
{
	if (CMD_XXX_NUM==Event_type)
	{
		/*PropertiesPtr mProp= *(Properties::PropertiesPtr*)_data;
		std::string data = mProp->getValue("Data", "");
		Json::Reader oReader;
		Json::Value oValue;
		char data = oValue["event_info"]["pic_url"]["vehicle_pic_url"].asString().c_str();*/
		CHAR*strdata = (char*)_data;
		std::string* strret = (std::string*)_ret; //指针变量,进来的时候传数据长度,返回获取的图片URL
		int iBufSize = atoi((*strret).c_str());
		return GetCapturePicUrl(strdata, iBufSize, *strret);
	}
	return 0;
}

  调用的时候,传入void指针的类型是什么,什么就强制转换成什么类型的:

funcCommand(1, 2, 3, pstEventInfo->pPlatePicData.get(), &strPlateRet);
strPlateRet虽然为传出参数,也可传入一个参数。但是最好在_data那里传个结构体指针。

2、在一个栈里定义了一个指针,希望两次调用通过修改指针指向内存的数据,来实现不同的函数调用传入不同数据,可能有时候没修改成功,就传了。两次调用加sleep函数,不过最好定义两个指针。

 

posted @ 2020-07-12 17:37  秋雨声  阅读(485)  评论(0编辑  收藏  举报