问题超出数据限制是否超出范围异常?
int initfunc(int *array, int len) {
int i;
for (i = 1; i <= len; i++) {
array[i] = i;
}
return 0;
}
int main(int argc, char* argv[]) {
int* myarray = 0;
initfunc(myarray, 10);
}
答案 0 :(得分:0)
int initfunc(int *array, int len) {
int i;
for (i = 1; i <= len; i++) {
array[i] = i;
}
return 0;
}
int main(int argc, char* argv[]) {
int* myarray = 0;
initfunc(myarray, 10);
}
您永远不会在main中声明数组的大小。您需要静态或动态地分配大小。你现在有一个指向什么都没有的int指针。然后将指针传入并尝试使用以下方法访问它:
array[i] = i;
这是工作代码
int initfunc(int *array, int len) {
array = new int[len];
for (int i = 1; i <= len; i++) {
array[i] = i;
}
return 0;
}
int main(int argc, char* argv[]) {
int* myarray = 0;
initfunc(myarray, 10);
}
答案 1 :(得分:0)
您提供的代码存在两个问题。
第一个问题是你实际上没有为myarray
分配任何内存。您刚刚创建了一个指针,当前指向NULL
。
创建静态数组
int myarray[10];
或动态
int *myarray = new int[10];
第二个问题是你很可能在for循环中访问array
的范围之外。由于数组索引为零,因此您需要检查i < len
而不是i <= len
。