为什么这段代码在 c 中失败?

用户3044096

我试图循环一个二维数组,但由于某种原因,语句:

var = matrix[i + 1][j] // Fails for i = 1 and j = 0

next = i + 1; var = matrix[next][j] // Works, why???..

我认为它应该有效,因为如果我等于 1 并且我加 1 它是 2,并且我知道该值不为空,至少在我的情况下,哦,要提到的一件事是我正在使用以下输入进行测试:> 4 4 1,表示一个 4x4 矩阵,旋转 1 次,所以我确信矩阵 [2][0] 不是空的,我可以打印它并访问它等等。

这是整个代码:

#include <stdio.h> 
#include <stdlib.h>


void rotateMatrix(int** matrix, int top, int right, int left, int bottom)
{
//int rows = right;
//int columns = bottom;
int rowScan = 0;

int columnScan = 0;

int high = 0;
int low = 0;
int test = matrix[2][0]; 


for (int i = 0; rowScan != 1;)
{
    for (int j = 0; columnScan != 1;)
    {
        //int next = i + 1;
        high = matrix[i + 1][j]; //FAILS HERE WHEN 
        matrix[i + 1][j] = low != 0 ? low : matrix[i][j];
        i++;

        if (i >= bottom)
        {
            bottom--;
            break;
        }

        if ((i + 1) < bottom)
        {
            low = matrix[i + 1][j];
            matrix[i + 1] = high;
        }

        if ((i + 1) == bottom)
        {
            columnScan = 1;
            rowScan = 1; 
        }

       }
      }
    }



  int main()
 {
//-- Declaring variables
int rows, columns, rotations;

//-- Initializing variables
rows = 0;
columns = 0;
rotations = 0;

//-- Scanning parameters and adding them to the stdin buffer
scanf("%d %d %d", &rows, &columns, &rotations);

//-- Initializing 2D array to save the Matrix values allocating space in memory
int **matrix = (int**)malloc(rows * sizeof(int*));

//-- Initializing each allocated pointer to each column size
for (int i = 0; i < rows;i++)
    matrix[i] = malloc(columns * sizeof(int));

//-- Scanning Matrix values and saving them into stdin buffer
for (int i = 0; i < rows; i++)
    for (int j = 0; j < columns; j++)
        matrix[i][j] = rand() % 10;
//      scanf("%d", &matrix[i][j]);

//-- Rotating R times
 while ((rotations--) != 0)
    rotateMatrix(matrix, 0, columns, 0, rows); 


for (int i = 0; i < rows; i++)
{
    for (int j = 0; j < columns; j++)
    {
        printf("%d", matrix[i][j]);
    }
    printf("\n");
}

getchar(); 
getchar();

return 0;
   }
用户3044096
    matrix[i + 1] = high;

这一行是问题所在,我错过了 [j],visual studio 没有抛出异常,这就是为什么我无法知道发生了什么,但是使用 GCC 编译器并检查警告帮助我找出我是什么做错了,谢谢!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么Python中的这段代码比C ++快得多?

为什么无法在这段C ++代码中实例化模板?

为什么来自Bjarne的“ C ++旅游”中的这段代码有效?

为什么这段代码不将基类转换为c ++中的派生类?

为什么这段代码没有在 C 中返回任何内容

为什么这段 JavaScript 代码在 TypeScript 中失败了?

什么是|| 在这段代码中做什么?这段代码的目的类似于 C 中的 switch(condition)?

这段代码中numpy.c_有什么用?

C:为什么这段代码会打印出来?

为什么这段代码用 Python 比用 C++ 快?

为什么这段代码比等效的C ++ / Clang生成更多的汇编?

为什么这段代码不起作用?(C基本IO)

C++ 为什么这段代码的输出是 3?(结构)

为什么这段代码在 nodejs 中不能正常工作?

为什么这段代码不调用子类?Java中的继承

为什么这段代码在结构中包含冒号?

为什么这段代码中没有对 ImageView 的引用?

为什么这段代码中的模式不是详尽无遗的?

为什么android代码中的这段java这么慢?

为什么这段代码在if陈述中给我错误

为什么我不能打乱这段代码中的元素?

为什么stringbuffer在这段代码中不起作用?

为什么我必须使用可选的“?” 在这段代码中?

C ++,这段代码说什么?

这段C ++代码做什么?

为什么这段代码编译失败,理由是类型推断的原因是什么?

为什么在C#中这种失败会失败?

我的C ++代码在宏+模板编译中失败,为什么会出现此错误?

在C代码中查找“失败”