我一直在grid[x][y] = rand();
上遇到段错误有什么帮助吗?我尝试用数字替换随机函数调用,看看这是否是导致问题的原因,但似乎并非如此。我不知道
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int x;
int y;
int gridMult;
int grid[gridMult][gridMult];
srand(time(NULL));
std::cout << "Enter grid size:: ";
std::cin >> gridMult;
while(x < gridMult){
while(y < gridMult){
grid[x][y] = rand();
y++;
}
x++;
}
for(int x = 0; x < gridMult; x++){
for(int y = 0; y < gridMult; y++){
std::cout << grid[x][y];
}
std::cout << std::endl;
}
return 0;
}
在这两行中
int gridMult;
int grid[gridMult][gridMult];
gridMult
是未定义的,那么您希望编译器如何正确调整数组的大小?
然后,当您进入循环时:
while(x < gridMult){
while(y < gridMult){
grid[x][y] = rand();
x
和y
也是未定义的。
通常,我会将这些循环更改为for
(或范围for
),以尽可能缩小迭代变量的范围。
如果希望它根据用户输入动态分配,请使用 std::vector
并将其resize
为所需的大小。
我还要补充一点,二维数组通常是在一维存储向量和其顶部的二维视图上实现的,而不是嵌套向量,所以你可能想阅读这些模式。