一个C语言问题

[复制链接]
3376|14
 楼主| 福州观沧海 发表于 2012-8-2 22:17 | 显示全部楼层 |阅读模式
char *Flash_ptr;                          // Flash pointer
Flash_ptr = (char *) 0x1040;              // Initialize Flash pointer
我对二条语句的理解不知是否正确:定义了字符型指针char *Flash_ptr;那么Flash_ptr本身也被默认为字符型变量。而0x1040却超出了字符型的范围,所以需要用(char *)来进行强制类型转换?其中()表示强制类型转换,(char*)则表示将0x1040强制类型转换为字符型指针。
不甚理解,请高手们指点,谢谢!
MCU52 发表于 2012-8-2 23:11 | 显示全部楼层
本帖最后由 MCU52 于 2012-8-2 23:12 编辑

1,”Flash_ptr本身也被默认为字符型变量“。是字符型指针变量。
第二句就是对这个指针赋值,
2,0x1040是个绝对地址,可以存放任何类型,而Flash_ptr指针指向的是字符型,
“(char*)则表示将0x1040强制类型转换为字符型指针”。对
 楼主| 福州观沧海 发表于 2012-8-3 09:41 | 显示全部楼层
请问LS,"Flash_ptr”一个指向字符型的指针,他本身的变量类型是不确定的?既可以存放字符型大小的数据,又可以存放整型大小的数据?
xyz769 发表于 2012-8-3 10:43 | 显示全部楼层
Flash_ptr = (char *) 0x1040;

这句,表示将指针指向 0x1040这个地址。类型还是指针。
sedatefire 发表于 2012-8-3 10:50 | 显示全部楼层
“而0x1040却超出了字符型的范围,所以需要用(char *)来进行强制类型转换?”
你对指针的理解恐怕有些问题
地址的范围  
由mcu的总线宽度和编译器决定,和数据类型没有任何关系。
在51中,和存储类型有些关系,data,xdata等等。
 楼主| 福州观沧海 发表于 2012-8-3 11:53 | 显示全部楼层
就是说不管指向字符型的指针还是指向整型的指针亦或者是指向浮点型的指针,他们都是指针型变量,没有普通变量那样具有的数据类型的约束。
zhaofy521 发表于 2012-8-3 12:46 | 显示全部楼层
6# 福州观沧海

指针变量的长度在变,像32位机的话4个字节。。。

评分

参与人数 1威望 +1 收起 理由
tuzihog + 1 说的好~~

查看全部评分

菜鸟同学 发表于 2012-8-3 16:29 | 显示全部楼层
指针就是一个类型,这个类型装的是一个数据的地址,而这个数字有多个类型,char int float double ......
。所以char* 只是表示你这个指针变量Flash_ptr 存储的地址指向的数据类型是char ,而实际的寻址看你的CPU或者系统是多少位的决定了。你这个应该是某个单片机 FLASH擦写操作中的代码吧。:lol
NOTE:Flash_ptr是一个存地址。不是char  
吹起的水滴 发表于 2012-8-3 17:04 | 显示全部楼层
针变量的长度在变,像32位机的话4个字节。。。
hawksabre 发表于 2012-8-3 18:28 | 显示全部楼层
指针变量本身也在变  建议少用指针
杜专 发表于 2012-8-3 21:03 | 显示全部楼层
表示是一个地址呢
nudf0009 发表于 2012-8-3 21:24 | 显示全部楼层
一个字符指针的用法。
hpxlove 发表于 2012-8-6 11:08 | 显示全部楼层
2条语句的意思就是 0x1040是地址 而且地址里面的值为char 型
tuzihog 发表于 2012-8-8 21:17 | 显示全部楼层
7# zhaofy521
说的很好:楼主应该好好看看这个回答
自己测试的结果:
16位机的指针变量长度是2个字节
编译环境IAR for 430
32位机的指针变量长度是4个字节
编译环境C-Free 5.0
测试代码:
unsigned int a;
char *Flash_ptr;
Flash_ptr = (char *) 0x1040;      
a = sizeof(Flash_ptr);
printf("%d\n",a);
nqyijian 发表于 2012-8-10 11:45 | 显示全部楼层
定义了字符型指针char *Flash_ptr;那么Flash_ptr本身也被默认为字符型变量

这个不对,Flash_ptr是指针变量,不是字符型变量。只是它装着的地址中存储的是个字符型变量。
或者说,它存着一个字符型变量的地址。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

311

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部