Q
双常量声明
8
A
回答
17
第一个常量说,所指向的数据是不变的,不得改变,第二个表示指针本身不可更改:
char my_char = 'z';
const char* a = &my_char;
char* const b = &my_char;
const char* const c = &my_char;
a = &other_char; //fine
*a = 'c'; //error
b = &other_char; //error
*b = 'c'; //fine
c = &other_char; //error
*c = 'c'; //error
1
这使得它成为一个const值的const指针,而不是指向const值的可变指针或指向可变值的const指针。
3
这是一个常数指针,指向一个常数无符号字符。你不能改变指针或它指向的东西。
1
const * unsigned char const buffer
意味着您不能修改指针buffer
,也不能修改buffer
指向的内存。
2
在像const * const T
声明,第一const
(在*
之前)意味着什么指针指向在是const
(即它是一个指向const T
)。在*
之后的const
意味着指针本身是const
(即,不能被修改为指向任何其他)。
1
一对夫妇的文章,帮助您了解C++ const正确性:
2
假设const为unsigned char * const
大家都是正确的,它是一个const指针,指向一个const无符号字符。
C++类型主要读取从右到左除非在最左边有任何修饰符,然后这些从左到右读取。
7
类型声明应该(?)读取RTL。 const
修改其左侧的东西,但规则很复杂,因为您可以同时写入const T
和T const
(它们的意思是相同的)。
T * const
是恒定指针可变ŤT & const
将恒定参照可变Ť,除了参考文献是由定义常量T const *
是可变指针常数TT const &
是参考常数TT const * const
是常数指针常数T
+0
谢谢,RTL阅读建议对于这些特性情况很有用。 – SyBer 2010-01-29 22:13:03
相关问题
- 1. 在常量声明
- 2. 声明字符串常量
- 3. Ada中的常量声明
- 4. p在常量声明
- 5. 声明数组常量
- 6. 声明常量枚举
- 7. Javascript原型常量声明
- 8. 声明常量没有值
- 9. 阿达:常量声明
- 10. 与块常量声明
- 11. 声明的NSString常量
- 12. 双变量不在声明中?
- 13. 不明白常量方法声明
- 14. 在R中声明常量变量
- 15. 为什么这个常量常量常量声明中无效
- 16. EXTERN常量,这是声明,这是向前声明
- 17. 使用未定义的常量声明的 - 假设“声明”
- 18. 双,浮法和长声明
- 19. C++双声明/定义?
- 20. CSS双声明(jQuery的)
- 21. 无法声明自引用常量
- 22. 如何在SWI-Prolog中声明常量?
- 23. 大括号的Javascript常量声明
- 24. 静态常量类成员声明
- 25. OpenOffice basic:声明一个数组常量
- 26. 在项目中声明常量
- 27. 常量声明 - 语言差异?
- 28. 使用声明和常量重载
- 29. 在对象声明中使用常量?
- 30. 用C语言声明常量
它应该是'const的无符号字符* const' – wich 2010-01-28 16:58:58
IIRC无符号的字符常量* const的也是有效的 – 2010-01-28 17:26:32
不,你没有看到这样的声明“经常”。该声明实际上是无效的,因此是没有意义的。请在发布带有问题的代码时加倍小心。 – AnT 2010-01-28 17:33:47