日期:2014-05-17  浏览次数:20741 次

关于const的问题! - Windows专区 / 非技术区
const int nCount[] = {1,2,3};
counst int nCount0 = 100;

int nCount1[nCount[1]]= {};//error!------------1
int nCount2[nCount0] ={};//error!--------------2

const int NI = nCount0 + 100;//right??---------3


1 2错误,3是对的?什么原因??有哪位能解析下?我查了下C++思想,它好像是这么解释这个的:
c o n s t可以用于集合,但编译器不能把一个集合存放在它的符号表里,所以必须分配内存。在这种情况下,c o n s t意味着“不能改变的一块存储”。然而,其值在编译时不能被使用,因为编译器在编译时不需要知道存储的内容。

。。。。。。哪位能解释的再清晰点!编译原理学的不是很好!看不懂它的意思!顺便求:比较浅显的编译原理书!高级语言程序员够用就行!指令系统,寄存器之类的搞起来太麻烦了,也没那么多时间学了!就是想知道程序编译过程,编译器做了下什么?对理解起这些指针之类的东西有帮助的东西!各位大虾们有什么建议没?



------解决方案--------------------
不好意思,不是编译前,而是运行时

比如:
const int b=10;//运行前确定,

string str;
for(int i=0;i<10;i++)
str+="a";

const int a=str.size();
要运行时才确定值,因为不运行上面的for循环,你就不知道str的size()到底有多大