打印

请教 单片机 C语言指针问题

[复制链接]
1450|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xjycug|  楼主 | 2012-3-1 16:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
环境是Keil   语言是C语言
定义void型指针变量,有时想使其指向字节型变量,有时想使其指向整型变量。但是如何修改对应变量的值呢?
程序如下:
void *ptemp;   //void型指针变量
unsigned char aaa = 2; //定义字节型变量
unsigned int  bbb = 3;  //定义整型变量
ptemp = (unsigned char *)(&aaa);  //使void型指针变量指向字节型变量
*ptemp = 5;   //想将变量aaa的值由原来的2,通过指针修改为5;
以上的方法可行吗?
但是使用Keil编译的时候,语句 *ptemp = 5;编译通不过,提示赋值到未知类型的区域。
我觉得使用void型指针可以在程序中通过强制转换使其指向规定类型的变量,此后,该指针就是指向规定类型的指针,这样理解对吗?还是程序中哪儿写得不对,希望得到指点!谢谢先!

相关帖子

沙发
Cortex-M0| | 2012-3-1 17:01 | 只看该作者
可使用强制转换赋值

使用特权

评论回复
板凳
liang7143| | 2012-3-1 17:13 | 只看该作者
我觉得使用void型指针可以在程序中通过强制转换使其指向规定类型的变量,此后,该指针就是指向规定类型的指针,这样理解对吗?

不准确,此后,该指针 还是 void * 类型的

赋值 应该进行强制转换
*(unsigned char *)ptemp = 5;   //想将变量aaa的值由原来的2,通过指针修改为5;

使用特权

评论回复
地板
xjycug|  楼主 | 2012-3-1 21:54 | 只看该作者
下午上班和同事讨论试了试,确实如3楼所说!
看来我对void型指针还需多加了解啊

使用特权

评论回复
5
xjycug|  楼主 | 2012-3-1 22:03 | 只看该作者
3楼的兄弟,怎么给不了分你啊。。。
明天再登陆试试吧,今天就暂不结贴了。不好意思哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

185

帖子

2

粉丝