原创 C语言中(int *)p的用法

2009-8-24 14:55 5509 4 4 分类: MCU/ 嵌入式

先提供一段程序代码(希望读取某特定地址的值)


unsigned int adddress;      //定义一个变量作为地址


unsigned char value     //地址中的值


unsigned char *p;


address=0x1111;


p=(unsigned char *)address;


value=*p;


根据指针的定义,定义指针变量unsigned char *p,给p赋值应该是变量地址的值,从而使指针指向这个变量,例如定义变量unsigned char a,为了使指针指向a,应该有这样的赋值语句:p=&a


在以上程序中,address已经是地址的值,从理论上讲应该直接让p=address,就可以让指针指向地址为address的变量,但是这样是不行的。因为p是指针变量,而address是普通变量,他们不能直接赋值的。


在程序中使用了p=(unsigned char *)address的赋值方法,通过(unsigned char *)将address转换成指针变量,其实只是作为一种转换方式,没有其他特殊的含义,这样之后p的值就是address的值,即0x1111。注意(unsigned char *)address*address的含义是不一样的。


另外还应注意的是定义指针变量unsigned char *p的含义是p所能指向的是char型,而与p本身是没有关系的。由于本程序希望得到的是address地址中一个字节的值,所以定义了char型,因此也就定义了char型指针变量。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条