Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 犯了一个错误。为什么?_C++_Segmentation Fault - Fatal编程技术网

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的初始值是什么?Move
int 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看到我的答案的第三部分。/代码>。