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. 声明的NSString常量
- 4. Ada中的常量声明
- 5. 阿达:常量声明
- 6. p在常量声明
- 7. 双变量不在声明中?
- 8. 在R中声明常量变量
- 9. 使用未定义的常量声明的 - 假设“声明”
- 10. CSS双声明(jQuery的)
- 11. 双,浮法和长声明
- 12. 常量声明 - 语言差异?
- 13. 如何声明一个常变量
- 14. 声明浮点常量的错误
- 15. Windows VK_常量是如何声明的?
- 16. 在项目中声明常量
- 17. C++函数声明常数变量
- 18. 大括号的Javascript常量声明
- 19. 声明静态常量在功能
- 20. OpenOffice basic:声明一个数组常量
- 21. 在对象声明中使用常量?
- 22. 在运行时声明常量(Java)?
- 23. JUNIT - 声明异常
- 24. 变量声明?
- 25. 声明变量
- 26. 声明变量
- 27. 声明变量
- 28. 变量声明
- 29. 变量声明
- 30. 声明变量
它应该是'const的无符号字符* const' – wich 2010-01-28 16:58:58
IIRC无符号的字符常量* const的也是有效的 – 2010-01-28 17:26:32
不,你没有看到这样的声明“经常”。该声明实际上是无效的,因此是没有意义的。请在发布带有问题的代码时加倍小心。 – AnT 2010-01-28 17:33:47