首席BadGuy 发表于 2014-6-28 19:20:00

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

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

这是《c和指针》里面的一道课后问题,如题诚心求教。但我还没有鱼币,抱歉各位了。

戏++ 发表于 2014-6-28 19:40:52

?问题可以表述清楚吗

首席BadGuy 发表于 2014-6-28 19:51:51

这是一个问题的完整描述。

仰望天上的光 发表于 2014-6-28 19:59:16

假设有的话,比如,我们用
123A表示int*类型的指针常量
123B表示char*类型的指针常量
123C表示float*类型的指针常量
。。。
(以上你可以把C语言的基本类型都列举一遍,下面我们继续列举struct类型的指针)

如果你定义了一个
struct Student{
//...
};
那么假设用123Z表示它,问题就在这里了。这个struct Student*类型只有你自己知道,别人根本不知道,所以C语言如果这么定义,那么就只有你一个人认为C语言的发明者脑袋没有问题。。。所以不能定义指针字面量的写法

首席BadGuy 发表于 2014-6-28 20:57:38

仰望天上的光 发表于 2014-6-28 19:59 static/image/common/back.gif
假设有的话,比如,我们用
123A表示int*类型的指针常量
123B表示char*类型的指针常量


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

仰望天上的光 发表于 2014-6-29 10:32:53

首席BadGuy 发表于 2014-6-28 20:57 static/image/common/back.gif
感谢版主的回复,但版主的回复是能定义但没必要,题意应该是实现不了这个定义。
我在想会不会跟地址空间 ...

不,我的恢复的意思是实现不了这个功能,请人阵看我的回复。

柠“萌”圆 发表于 2014-7-5 11:31:33

双引号扩起来的
例如"abcdef"就是一个字面值(指向char)的指针常量
你可以
const char* p = "abcdef";
但是不可以
char* p = "abcdef";// 字面值是const的,不能被普通指针指向

绝尘の初 发表于 2014-7-18 17:22:25

没看懂标题:dizzy:
页: [1]
查看完整版本: c为什么没有一种方法来声明字面值指针常量呢?