C\C++怎么定义常量数组
C\C++如何定义常量数组不是在类里面。一般这样定义 const int a[3]{1,2,3}const float f[3]{1.1,2.2,3.3
C\C++如何定义常量数组 不是在类里面。 一般这样定义 const int a[3]={1,2,3}; const float f[3]={1.1,2.2,3.3}; a和f中的元素好像都可以改变,如果拿a的元素来做数组长度的话编译器就会报错,有没有什么方法定义常量数组,可以使得数组的元素也是一个定值。 不要使用枚举,也不要使用动态分配。 C C++ 常量数组 [解决办法] 不推荐干这样的事情,常量的数组,需要是啥?
struct A { static const int arr[10]; }; const int A::arr[10]={1,2,3};[解决办法] 你的意思是int b[a[0]]吗?
不行 只能动态分配
我手头正好有书翻了一下
谭浩强 C程序设计(第四版) P143 中这样说明:
如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非常量表达式。如:
void func(int n)
{
int a[2*n]; //合法,n的值从实参传来
……
}
但是我试了一下 行不通的 这书坑爹啊
D:\test\test.cpp(4) : error C2057: expected constant expression
D:\test\test.cpp(4) : error C2466: cannot allocate an array of constant size 0
D:\test\test.cpp(4) : error C2133: 'b' : unknown size
只能动态分配了 那个也不是很复杂啊
[解决办法] 这个c语言标准里没说一定要实现,由编译器自由发挥,gcc实现了int a[n]; 这样的定义.
引用: 你的意思是int b[a[0]]吗? 不行 只能动态分配 我手头正好有书翻了一下 谭浩强 C程序设计(第四版) P143 中这样说明: 如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非常量表达式。如: void func(int n) { int a[2*n]; //合法,n的值从实参传来 …… } 但是我试了一下 行不通的 这书坑爹啊 D:\test\test.cpp(4) : error C2057: expected constant expression D:\test\test.cpp(4) : error C2466: cannot allocate an array of constant size 0 D:\test\test.cpp(4) : error C2133: 'b' : unknown size 只能动态分配了 那个也不是很复杂啊
[解决办法] 除了强制转换,不能修改。
强制转换意味着你(程序员)要对你行为负一切责任。
[解决办法] 引用: 哎呀哎呀,都说了,我没有按C标准来写程序,本来用的就不是纯C编译器,在C++中是允许const int变量以及enum变量作为数组长度的,所以我想能不能用一个const int 数组来定义长度,因为我原本以为const int数组中的元素也是固定不可改变的,所以就想当然了,结果发现编译器报错,才知道自己是错的,我在这里提问是想知道有没有办法定义一个数组,使得数组中的元素是不可改变的常量。 c++中建议用const int N = 3;来代替宏#define N 3 ,不仅仅是允许,是建议。因而可以想到的是,编译器不会真在常量数据段中为3分配空间,而是像宏一样,在编译时把所有的N换成3。
但对于 const int a[3],编译器会在数据段中为数组开辟空间,于是b[(a[0])]小括号中的值就只能运行时确定了。