C++ 犯了一个错误。为什么?
我在C++ 犯了一个错误。为什么?,c++,segmentation-fault,C++,Segmentation Fault,我在grid[x][y]=rand()上不断得到一个segfault 有什么帮助吗?我试着用一个数字替换随机函数调用,看看这是否是导致问题的原因,但似乎不是这样。。我不知道 #include <iostream> #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ int x; int y; int gridMult; int grid[gridMult][g
grid[x][y]=rand()上不断得到一个segfault代码>
有什么帮助吗?我试着用一个数字替换随机函数调用,看看这是否是导致问题的原因,但似乎不是这样。。我不知道
#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 main(){
int x;
int-y;
int gridMult;
int grid[gridMult][gridMult];
srand(时间(空));
标准::cout>gridMult;
while(x
int gridMult;
int grid[gridMult][gridMult];
gridMult
未定义,那么您希望编译器如何正确调整数组的大小
然后,当您到达循环时:
while(x < gridMult){
while(y < gridMult){
grid[x][y] = rand();
while(x
x
和y
也未定义
一般来说,我会将这些循环更改为for
(或range-for
),以尽可能缩小迭代变量的范围
如果希望根据用户输入动态分配,请使用std::vector
和resize
将其调整为所需大小
我还要补充一点,二维数组通常是在一维存储向量上实现的,而不是嵌套向量上的二维视图,因此您可能需要了解这些模式。x和y的初始值是什么?Moveint grid[gridMult][gridMult]
在std::cin>>gridMult之后;
您正在使用未定义的值gridMult
初始化数组grid
,在创建数组之后,您将值加载到gridMult
,这不是您想要的,即使gridMult
已定义,int grid[gridMult][gridMult]
在C++@LưuVĩnhPhúC中仍然是不允许的。但我觉得专注于解决方案而不是问题是一个更好的方法。为什么不允许呢?尝试了解所有这些lol@Austin_No_Brain因为在C++中数组的大小必须是编译时常数。@ AuStina NoyLyWord看到我的答案的第三部分。/代码>。