浏览 1741 次
锁定老帖子 主题:对const操作来分配一个数组空间错误
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-01-28
#include <stdio.h> int main(void) { const int i = 2; const int a[i] = {1, 2}; //为什么这里可以编译通过? const int b[a[i-1]] = {1, 2}; //为什么这里编译无法通过? return 0; } C++编译器多数是不会为第一句中的i分配空间的,而是将其放入符号表中,是个编译时期的常量,这样就保证了编译器在扫描第二句时能通过。而第二句是 const用于集合的情况,但是必须保证编译器不会复杂到把一个集合保存到它的符号表中,所以必须分配内存。在这种情况下,const就意味着“不能改变的一块存储空间”,然而不能在编译期间使用它的值,因为编译器在编译期间不需要知道存储的内容。正因为如此,使得第三句不能编译通过。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |