【发布时间】:2016-01-28 02:15:11
【问题描述】:
所以,我一直在尝试创建一个简单的程序,它只需要一个空数组和一个大小,并用从 1 到指定数字的数字填充它。
#include <iostream>
using namespace std;
int* fill(int empty[], int size) {
int i;
for (i = 1; i < size; i++) {
empty[i] = i;
}
return empty;
}
int main() {
int size;
cin >> size;
int* empty = new int[size];
fill(empty, size);
for (int i = 0; i < size; i++) {
cout << empty[i] << endl;
}
return 0;
}
所以,这就是我的代码。 当 int i 时它工作得很好,在 fill() 方法中为 0,但我想从 1 开始数字,当我这样做时,它看起来像这样:
-842150451
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
注意它是如何用一个奇怪的负数代替 0 的?这是我输入“30”作为数组大小的时候。
当我将 i 的值设置为 0 时,它只是将那个负数替换为 0。 有什么方法可以从一个数组开始?
谢谢。
【问题讨论】:
-
empty[0]只是未初始化。 -
for (i = 1; i < size; i++) { -
如果填充数组时从1开始,打印时也应该从1开始。
-
c/c++ 中数组的第一个索引始终为 0。您无法更改它。无论如何最好从 0 开始数组。
-
我不会否决这个问题。当你使用基于索引的数组时,你应该小心。考虑是否可以使用其他数据结构。