c - c 中的二维数组,检查值时出现意外值

标签 c arrays pointers segmentation-fault

这不是整个程序,只是(据我所知)导致问题的片段,如果需要更多,我会更新

我需要获取一个由 0 组成的矩形数组来模拟网格

int Length, Height, NumberOfParticles, Direction, validInput, StartXPosition, StartYPosition;
int *LatticeHeight;
int **Lattice;

LatticeHeight = (int*)malloc(Height*sizeof(int));

/* 
    Check for memory allocation failure 
*/

if(LatticeHeight==NULL)
{
    printf("\nMemory allocation failure. Exiting ...\n");
    return(EXIT_FAILURE);
}

Lattice = (int**)malloc(Length*sizeof(LatticeHeight));

/* 
    Check for memory allocation failure again 
*/

if(Lattice==NULL)
{
    printf("\nMemory allocation failure. Exiting ...\n");
    return(EXIT_FAILURE);
}

然后有一些我省略的输入验证,但最终它得到了高度和长度的值

int i,j;
for(i=1; i<Height; i++)
{
    LatticeHeight[i] = 0;
}

for(j=0; j<Length; j++)
{
    Lattice[j] = LatticeHeight;
}

for(i=0;i<Height;i++)
{
    for(j=0;j<Length;j++)
    {
        printf("%d\n",Lattice[i][j]);
    }
}

此打印语句返回

139064
0
0
0
139064
0
0
0
139064
0
0
0
139064
0
0
0

谁能解释一下为什么吗?

最佳答案

您已从 1 开始循环

for(i=1; i<Height; i++)
{
    LatticeHeight[i] = 0;
}

改成这样

for(i=0; i<Height; i++)
{
    LatticeHeight[i] = 0;
}

关于c - c 中的二维数组,检查值时出现意外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27450018/

相关文章:

c - 为什么从 strtok() 返回的指针在传递给 printf() 时会导致段错误?

c - 在 C 中反转链表时出现运行时错误

C: "lvalue required as left operand of assignment"在动态结构中使用指针时

c - 手动加载编译后的代码

php - 将两个数组插入到一个mysql表中

javascript - 如何调用由函数创建的、现在位于数组中的对象?

c++ - 二进制 I/O 到具有二维动态数组的文件

c - 如何在 C 中使用带有用户输入的循环函数?

c++ - 不带循环和内置函数的字符串长度

c++ - 转换递归函数并使其迭代