我愿意编写一个代码来创建一个带有可变索引的数组(意味着在函数中有一个静态数组并向其中添加值,然后退出循环并再次返回并向其添加另一个值结束了) 但是我的代码没有编译:
#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];
}
答案 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];
}
但你所做的事情是行不通的。
如果您分享预期的输出,我们可以为您提供更多帮助。