打印
[ZLG-ARM]

指针问题

[复制链接]
1815|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chunpu|  楼主 | 2007-5-7 11:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TI, AN, ni, ratio, IO
请问,可否把0xE0028000、0xE0028004等这样的地址复制到指针呢?
INT32U *p;
p = (INT32U *)0xE0028004;
我这么做,提示错误:
 

Error[Pe077]: this declaration has no storage class or type specifier 

Error[Pe147]: declaration is incompatible with "INT32U *__data p" 

Error[Pe144]: a value of type "INT32U *" cannot be used to initialize an entity of type "int" 


谢谢!

相关帖子

沙发
ayb_ice| | 2007-5-7 17:00 | 只看该作者

试试这样

U32 p,k;
p = 0xE0028004;
k = *((U32*)p);
不过你的方法是应该可以的...
直接赋值不可以吗
p = 0xE0028004;

使用特权

评论回复
板凳
zlg_arm| | 2007-5-7 17:56 | 只看该作者

因该是直接复制

INT32U *p;
p = (INT32U)0xE0028004;

使用特权

评论回复
地板
zlg_arm| | 2007-5-7 18:00 | 只看该作者

对不起,打错了

int *p;
p = (int *)0xE0028004;
这样是可以的,我的ads1.2环境通过了,而且也是正确取得址了

使用特权

评论回复
5
zlg_arm| | 2007-5-7 18:03 | 只看该作者

还有方法

INT32U *p;
p = 0xE0028004; 
这个不可以,那个值,编译器会检测类型的!除非你先
int p
p = 0xE0028004; 
p=(int*)p;
这样也可以!!

使用特权

评论回复
6
zlg_arm| | 2007-5-7 18:05 | 只看该作者

还有方法

int p,*m;
p = 0xE0028004; 
m=(int*)p;

使用特权

评论回复
7
chunpu|  楼主 | 2007-5-7 23:19 | 只看该作者

为什么呢?

谢谢!
我把原来的语句写到main里,编译通过了,写在main外部还是不行,为什么呢?
int  main(void)
{   
    INT32U *p;
    p = (INT32U *)0xE0028004;
    while(1);
}
通过!



    INT32U *p;
    p = (INT32U *)0xE0028004;
int  main(void)
{     
    while(1);
}
报错!!!!

使用特权

评论回复
8
zlgARM| | 2007-5-8 08:38 | 只看该作者

chunpu

除了全局变量的初始化外,赋值语句都要在函数体内。

使用特权

评论回复
9
zlg_arm| | 2007-5-8 10:43 | 只看该作者

基本的c语法!

周公讲得很对!楼主该要好好看看了c语言书了

使用特权

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

本版积分规则

7

主题

20

帖子

0

粉丝