鱼C论坛

 找回密码
 立即注册
查看: 3003|回复: 7

c为什么没有一种方法来声明字面值指针常量呢?

[复制链接]
发表于 2014-6-28 19:20:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 首席BadGuy 于 2014-6-28 20:36 编辑

这是《c和指针》里面的一道课后问题,如题诚心求教。但我还没有鱼币,抱歉各位了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-28 19:40:52 | 显示全部楼层
?问题可以表述清楚吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-28 19:51:51 | 显示全部楼层
这是一个问题的完整描述。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-6-28 19:59:16 | 显示全部楼层
假设有的话,比如,我们用
123A表示int*类型的指针常量
123B表示char*类型的指针常量
123C表示float*类型的指针常量
。。。
(以上你可以把C语言的基本类型都列举一遍,下面我们继续列举struct类型的指针)

如果你定义了一个
struct Student{
  //...
};
那么假设用123Z表示它,问题就在这里了。这个struct Student*类型只有你自己知道,别人根本不知道,所以C语言如果这么定义,那么就只有你一个人认为C语言的发明者脑袋没有问题。。。所以不能定义指针字面量的写法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-6-28 20:57:38 | 显示全部楼层

感谢版主的回复,但版主的回复是能定义但没必要,题意应该是实现不了这个定义。
我在想会不会跟地址空间有关系。
比如声明字面值指针常量为:const int *p=(int *)0x12345678;编译器有容错机制,不确定0x12345678是不是有效地址或者偏移,无法完成绑定?

点评

不,我的恢复的意思是实现不了这个功能,请人阵看我的回复。  详情 回复 发表于 2014-6-29 10:32
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-6-29 10:32:53 | 显示全部楼层
首席BadGuy 发表于 2014-6-28 20:57
感谢版主的回复,但版主的回复是能定义但没必要,题意应该是实现不了这个定义。
我在想会不会跟地址空间 ...

不,我的恢复的意思是实现不了这个功能,请人阵看我的回复。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-5 11:31:33 | 显示全部楼层
双引号扩起来的
例如"abcdef"就是一个字面值(指向char)的指针常量
你可以
const char* p = "abcdef";
但是不可以
char* p = "abcdef";// 字面值是const的,不能被普通指针指向
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-18 17:22:25 | 显示全部楼层
没看懂标题:dizzy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 15:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表