使用指针,没看见过这么用的,请大家指点迷经
我公司是搞嵌入式。今天看公司的代码,有类似如下代码(在VC中调试)
#include <stdio.h>
#include <memory.h>
void main()
{
unsigned char * pByte = 0;
int iNumber = 4;
void *pData = 0;
memcpy(&pData,&iNumber,sizeof(int));
pByte = (unsigned char *)pData;
printf( "%3d ",pByte[0]);
}
我本能反应这是不可能的,最起码在PC上不可能的,我在VC中编写上边代码做测试,发现VC和我想想的一样,但是我们的软件跑得很正常,能不能解释下。
[解决办法]
应该是哪边理解错了!
void *pData = 0;只是使指针指向地址 -- 0 , 后面的赋值相当于对地址 0 赋值。
在嵌入式中经常把某个地址强制转换为指针,然后对该地址进行读写操作,如:
#define REG (*(volatile unsigned char *)0x5F)
char buf;
buf = REG;//read
REG = 5; //write