Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_Pointers - Fatal编程技术网

C 如何访问阵列的移动部分

C 如何访问阵列的移动部分,c,arrays,pointers,C,Arrays,Pointers,我不知道在我的程序(用C编写)中该做什么。我正在处理一个大的数字矩阵(图像)。处理一次只进行一行,参考前一行,因此我一次只需要访问两行数字 最初,我尝试了一个2x数组,但一旦我保存了第三行的信息,数组就会颠倒,图像的第三行在数组的第一行,图像的第二行在图像的第二行 除了简单地将数组的第二行复制到第一行之外,还有更好的方法来纠正这个问题吗?也许它不会那么糟糕,但我可以想象,在图像的每一行这样做会很昂贵。我应该在图像上使用两个指针吗 我很抱歉,如果这是一个常见的东西,可以很容易地查找,但我不知道如何

我不知道在我的程序(用C编写)中该做什么。我正在处理一个大的数字矩阵(图像)。处理一次只进行一行,参考前一行,因此我一次只需要访问两行数字

最初,我尝试了一个2x数组,但一旦我保存了第三行的信息,数组就会颠倒,图像的第三行在数组的第一行,图像的第二行在图像的第二行

除了简单地将数组的第二行复制到第一行之外,还有更好的方法来纠正这个问题吗?也许它不会那么糟糕,但我可以想象,在图像的每一行这样做会很昂贵。我应该在图像上使用两个指针吗

我很抱歉,如果这是一个常见的东西,可以很容易地查找,但我不知道如何开始查找。如果有人需要澄清,请告诉我。多谢各位

我需要访问哪些号码的图表: 让我们假设您有:

struct rbg_t bitmap[X][Y];
要获得尺寸为X X X 2的窗口,如下所示:

struct rgb_t *first_line = bitmap[0], *second_line=bitmap[1];
然后您可以这样处理这两行:

for(int i=0;i<X;++i)
{
    do_work(first_line[i], second_line[i]);
}

其中X是位图的宽度

我假设您在读取图像或解压图像时对其进行处理,因为如果您已经将整个图像以可用形式存储在内存中,那么您就可以使用它

我看到两个相当不错的选择:

  • 使用变量跟踪哪一行包含哪一行,而不是硬编码2x数组中较早和较晚行的索引
  • 每行使用一维数组,并使用指针跟踪哪一行包含当前行,哪一行包含前一行

  • (虽然事实上,这些归结起来几乎是一样的。)无论哪种方式,你都可以避免不必要的复制。

    如果这是图像处理,你也可以发布图像。@Ben,图像应该是不相关的。我正在测试各种图像。但这并不重要,因为它实际上只是一个数字矩阵。你可以把单词image换成任何东西。我正在寻求帮助,了解如何通过一次向存储设备添加一行内容来存储两行内容。谢谢你的回复@尼克,你需要编辑这张图片吗?也许我应该说一张你想做什么的图表,一开始真的很混乱。现在我看到,您希望按行遍历数组,但同时扫描两行。你能详细介绍一下你想要什么吗?为什么你觉得有必要把这两行复制到一个缓冲区。谢谢你的建议!您正确地假设处理是在读取时进行的,有一个解压缩部分。谢谢您的回复!这可能适用于程序的第一部分。
    first_line+=sizeof(struct rgb_t)*X;
    second_line+=sizeof(struct rgb_t)*X;