c为什么没有一种方法来声明字面值指针常量呢?
本帖最后由 首席BadGuy 于 2014-6-28 20:36 编辑这是《c和指针》里面的一道课后问题,如题诚心求教。但我还没有鱼币,抱歉各位了。
?问题可以表述清楚吗 这是一个问题的完整描述。 假设有的话,比如,我们用
123A表示int*类型的指针常量
123B表示char*类型的指针常量
123C表示float*类型的指针常量
。。。
(以上你可以把C语言的基本类型都列举一遍,下面我们继续列举struct类型的指针)
如果你定义了一个
struct Student{
//...
};
那么假设用123Z表示它,问题就在这里了。这个struct Student*类型只有你自己知道,别人根本不知道,所以C语言如果这么定义,那么就只有你一个人认为C语言的发明者脑袋没有问题。。。所以不能定义指针字面量的写法 仰望天上的光 发表于 2014-6-28 19:59 static/image/common/back.gif
假设有的话,比如,我们用
123A表示int*类型的指针常量
123B表示char*类型的指针常量
感谢版主的回复,但版主的回复是能定义但没必要,题意应该是实现不了这个定义。
我在想会不会跟地址空间有关系。
比如声明字面值指针常量为:const int *p=(int *)0x12345678;编译器有容错机制,不确定0x12345678是不是有效地址或者偏移,无法完成绑定? 首席BadGuy 发表于 2014-6-28 20:57 static/image/common/back.gif
感谢版主的回复,但版主的回复是能定义但没必要,题意应该是实现不了这个定义。
我在想会不会跟地址空间 ...
不,我的恢复的意思是实现不了这个功能,请人阵看我的回复。 双引号扩起来的
例如"abcdef"就是一个字面值(指向char)的指针常量
你可以
const char* p = "abcdef";
但是不可以
char* p = "abcdef";// 字面值是const的,不能被普通指针指向 没看懂标题:dizzy:
页:
[1]