增加函数中的数组索引

时间:2014-04-17 19:52:53

标签: c++ arrays

我愿意编写一个代码来创建一个带有可变索引的数组(意味着在函数中有一个静态数组并向其中添加值,然后退出循环并再次返回并向其添加另一个值结束了) 但是我的代码没有编译:

#include <iostream>
#include <conio.h>
using namespace std;
void arrarr(int);
int main()
{
    for (int i = 1; i < 5; i++)
    {
        arrarr(i);
    }
    _getch();
    return 0;
}
void arrarr(int y)
{
    static int x[y];
    x[y] = 5;
    cout << x[y];
}

3 个答案:

答案 0 :(得分:2)

变量不能有可变的大小。您必须明确定义数组x的大小,例如:static int x[5]

此外,数组是零索引的,这意味着第一个元素从0开始。所以你的循环条件应该是for (int i = 0; i < 5; i++)

答案 1 :(得分:0)

C ++不支持变长数组,您需要为静态数组x定义常量。你可以这样做:

void arrarr(int y)
{
    static int x[SOME_CONSTANT_SIZE]; //SOME_CONSTANT_SIZE known at compile time
    x[y] = 5;   //y < SOME_CONSTANT_SIZE
    cout << x[y];
}

正如@Bruno指出的那样,数组索引从0开始到(size-1)

如果您希望动态增加阵列的大小,则不能这样做。请改用vector。见这里:http://www.cplusplus.com/reference/vector/vector/resize/

答案 2 :(得分:0)

您的代码因此无法编译:

static int x[y];

编译器不知道x是什么,例如

int [0]
int [1]
int [2]

所以你可以做到

void arrarr(int y) {
    static int x[10];
    x[y] = 5;
    cout << x[y];
}

但你所做的事情是行不通的。

如果您分享预期的输出,我们可以为您提供更多帮助。