[C++语法语义探讨] 请教!!
cutezjun
2007-03-26
在c++/c语言中,常量要不要给分配内存单元阿?
|
|
wzgme
2007-03-26
这话要有上下文?描述多点?
一般说,编译时候可以确定求值的,不分配;否则就要。 |
|
bigpanda
2007-03-26
问题看的不是很懂。
在Stack里面编译器自动分配,常量要是指针类的话自己要动态分配内存。 |
|
spinach
2007-03-28
恩了了
|
|
小帽子
2007-05-11
wzgme 写道 这话要有上下文?描述多点?
一般说,编译时候可以确定求值的,不分配;否则就要。 换句话说是不是 定义时不要 赋值时就分配了~ |
|
wzgme
2007-05-11
没明白你的意思?
编译器可以自动给你定下的。 |
|
bigpanda
2007-05-11
要想对这个问题给出一个完整的,正确的答案,还不是那么容易的事。
C/C++的一个translation unit,由一个个的declaration组成,这些declaration,有的是definition,有的不是。 我现在的假定是definition在run time自动分配内存,declaration不分配。 如extern int a; 这里不分配内存。但是在link时有个translation unit,里面有句 int a; 这里就分配内存了。 C++标准里有一章就讲这个,书在家里,章节数记不起来了. 这个话题值得探讨下去. |
|
qiezi
2007-05-13
既然能称得上“常量”的,自然是在静态数据区,不用绕得这么复杂吧。
能举出一个常量需要在运行期分配的例子吗? |
|
bigpanda
2007-05-14
本来的问题提的是没头没脑。
引用 常量要不要给分配内存单元阿? 既然问题没有提供上下文,那么就得猜。我是这么猜的: 常量涉及到两个概念,delcaration和definition。C++的translation unit是由一个个declaration组成的,有的declaration也是definition,有的不是。 C++标准是这么说的: 引用 A declaration is a definition unless it declares a function without specifying the function's body, it contains the extern specifier or a linkage-specification and neither an initializer nor a function-body, it declares a static data member in a class declaration, it is a class name declaration, or it is a typedef declaration, a using-declaration, or a using-directive. 我估计qiezi的意思是所有的definition都是分配内存的,这点我同意。我想说的是声明一个常量不一定分配内存。 extern int c = 1; // defines c extern int c; // declares c |
|
simohayha
2007-05-14
在c 语言中 定义只能出现在一个地方, 它分配内存,用于创建对象,比如: int arrray[100];
而声明可以多次出现, ,它用于指代其他地方定义的对象,比如 int array[]; 声明是不需要分配内存地说. |