如何初始化数组没有任何错误?

时间:2014-02-09 15:07:26

标签: c++

我的代码是在数组中找到最大值

#include <iostream>
using namespace std;

int main(){
    int i;
    int array[i]={1,2,3,4,5}
    int temp;
    for(int i=0;i<6;i++)
    {
            if(array[i]>temp)
            temp=A[i];
            }
            cout<<"the maximum number is "<<temp<<endl;
            return 0;
            }

但我在初始化数组时遇到错误为什么会这样?我们如何初始化数组?

3 个答案:

答案 0 :(得分:2)

您无法使用运行时变量定义数组的大小。

要解决此问题,您可以使用constexpr

constexpr int i = 5;
int array[i]={1,2,3,4,5};

或:

int array[]={1,2,3,4,5};

在后者中,编译器会推断出大小。


否则,如果您需要运行时大小,则必须使用标准库中的std::vector或任何其他“动态”容器:

int i = ...;
std::vector<int> array(i); // reserve `i` cells

答案 1 :(得分:1)

试试这个:

int array[]={1,2,3,4,5};

答案 2 :(得分:1)

首先,变量i未初始化

int i;

所以它有一些任意值。

其次,定义数组的大小应为常数exprssion。所以即使我将初始化这个定义

int array[i]={1,2,3,4,5}

也无效。此外,你忘了在结束括号后放置一个分号。

你也没有初始化变量temp

int temp;

最后这个循环的控制语句

for(int i=0;i<6;i++)

也是不正确的,因为该数组只有5个元素。

还没有宣布另外一个标识符

temp=A[i];

正确的代码可能看起来像

#include <iostream>
using namespace std;

int main()
{
    const int N = 5;
    int array[N] = { 1, 2, 3, 4, 5 };
    int max = array[0];

    for ( int i = 1; i < N; i++ )
    {
            if ( max < array[i] ) max = array[i];
    }

    cout << "the maximum number is " << max << endl;
    return 0;
}