2016-04-25 49 views
-4

我一直收到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; 
} 
+0

x和y的初始值是什么? – ZDF

+0

在'std :: cin >> gridMult后移动'int grid [gridMult] [gridMult];'' –

+0

您正在初始化数组'grid',其值为'gridMult',未定义,您将值加载到'gridMult'后数组被创建,并且这不是你想要的 – PcAF

回答

3

这两条线

int gridMult; 
int grid[gridMult][gridMult]; 

gridMult是未定义的,那么您如何期望编译器正确调整数组大小?


然后当你到循环:

while(x < gridMult){ 
    while(y < gridMult){ 
     grid[x][y] = rand(); 

xy也是不确定的。

通常,我会将这些循环更改为for(或范围for),以尽可能缩小迭代变量的范围。


如果你想让它根据用户输入动态分配,使用std::vectorresize它所需的大小。

我还补充说,2维数组通常是在1维存储矢量和2维视图上实现的,而不是嵌套矢量,因此您可能想要了解这些模式。

+0

即使'gridMult'被定义,'int grid [gridMult] [gridMult];'仍然不被允许在C++中 –

+0

@LưuVĩnhPhúcTrue。但我认为,关注*解决方案*,而不是*问题*是更好的方法。 –

+0

为什么不允许?试图了解所有这些大声笑 –