c – const char *,char const *,const char const *&string存储之间的区别

前端之家收集整理的这篇文章主要介绍了c – const char *,char const *,const char const *&string存储之间的区别前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,有什么区别:
(1) const char*
(2) char const*
(3) const char const*

我相当肯定我完全理解了这一点,但是我想让某人给我一个句子,具体来说就是粘在我的脑海里.这是其中一件事,我很好,直到有人把我当场,然后它变得模糊!

另外,编译器如何存储string-literall?这不是家庭作业,我只是在C上刷新面试,以防任何人关心.

解决方法

1和2是等价的,并指定一个指向const char的指针的类型.指针本身不是const. 3是无效的,因为它重复“const”.就像说const const int一样.这个顺序是不相关的,所以也是说int const int.

在C99中,这样重复const就是有效的.但在C中,你不能重复.

Also,how are string-literalls stored by the compiler?

它们以未指定的方式存储.但编译器可以将它们存储在程序的只读部分.所以你不能写字符串文字.您保证在整个程序生命周期内保持分配(换句话说,它们具有静态存储持续时间).

This isn’t homework,I’m just brushing up on C for interviews in case anyone cares.

你应该意识到C和C之间的细微差别.在C99中,如上所述,const const int是允许的.在C89和C中是禁止的.在C中,您可以引入一个冗余的const,如果应用于本身是const的typedef:

typedef int const cint;
cint const a = 0; // this const is redundant!

模板参数也是如此.

猜你在找的C&C++相关文章