专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

为什么C语言中没有一种方法来声明字面值指针常量呢,该怎么处理

发布时间:2011-06-28 16:18:42 文章来源:www.iduyao.cn 采编人员:星星草
为什么C语言中没有一种方法来声明字面值指针常量呢
为什么C语言中没有一种方法来声明字面值指针常量呢?

------解决方案--------------------
关注一下,不明白楼主实际问什么
------解决方案--------------------
unsigned short int *ca=(unsigned short int *)0xA0000000;
------解决方案--------------------
2楼这样是可以额
------解决方案--------------------
lz 是问 
char *ptr = "hello, world!" 吗?
------解决方案--------------------
楼主举一个不能的例子先。
------解决方案--------------------
探讨
unsigned short int *ca=(unsigned short int *)0xA0000000;

------解决方案--------------------
(unsigned long)ptr
------解决方案--------------------
我表示 没有理解楼主的意思 原来是说 直接声明一个指针指向你想指的位置 会不安全的
------解决方案--------------------
C/C++ code
unsigned short int *ca=(unsigned short int *)0xA0000000L;

------解决方案--------------------
2L已给了
------解决方案--------------------
yes
------解决方案--------------------
这个问题需要分两种情况讨论,
1、一般情况
通常,c语言中并没有提供一种语法,供程序员声明一个“指针常量”。大家都知道c中的变量有三种, 全局变量(在数据段中),自动变量(在线程的栈中),堆变量(在堆内存区)。
对于全局变量,在编译的时候由编译器给他们分配内存空间。
对于自动变量,是在函数的调用时,在调用栈上分配空间的。
堆变量,必须通过malloc,calloc,realloc这样的函数分配。
也就是说在上面三种情况下,我们要访问一个内存地址,只能通过变量符号来访问,你无法通过一个常量地址去访问一个变量。比如,我们无法通过类似0xff123456这个地址访问一个变量,因为程序员无法知道这块地址到底是分配给哪个变量的。
2、特殊情况
对于一些做驱动的程序员来说,比如要访问一个外设,那么这些外设的地址通常是固定的,这时候我们可以通过把整数强制转换为指针类型的方法达到目的。例如,如果我们外设的地址是100,那么我们就可以通过
int *pio = (int *)100;int r = *pio;这样的语句来实现。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: