#include <stdio.h>
#include <stdlib.h>
const int N = 5;
int main()
{
int vett[N] = {1, 2, 3, 4, 5};
return 0;
}代码的这一部分有什么问题?编译器向我报告这些错误和警告:
error: variable-sized object may not be initialized
warning: excess elements in array initializer [enabled by default]
warning: (near initialization for 'vett') [enabled by default]我知道我可以使用define指令来解决问题,但是我过去经常用c++编程,我不想用const改变我的旧习惯。有什么我能做的吗?谢谢。
发布于 2014-09-08 12:54:15
与C++不同的是,即使在const int N = 5中,N也不是C中的常量表达式,因此int vett[N]不是一个正常的(固定长度)数组,而是一个可变长度的数组。
在这种情况下,您仍然应该使用:
#define N 5发布于 2014-09-08 12:51:33
您正在使用可变长度数组。可变长度数组没有初始化器。您需要使用循环初始化它。请注意,在C中
const int N = 5; 并不意味着N是常数(不像在C++中)。因此,int vett[N]将vett声明为可变长度数组。
发布于 2014-09-08 12:53:22
您可以编写int vett[] = {1, 2, 3, 4, 5};,编译器将自动确定数组的大小,因为您已经确定了数组的值。
https://stackoverflow.com/questions/25724698
复制相似问题