gpt4 book ai didi

c - 语法不清楚指针和矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:55 24 4
gpt4 key购买 nike

我在用 C 编写代码,我必须使用 png 图像,所以我使用 libpng 库。在我的项目中,我使用这种结构:

png_bytep *row_pointers; /* <-- to declare the pointer that will contain the image 
and this to initialize the pointer to contain the image. */

row_pointers = (png_bytep*)malloc(sizeof(png_bytep) * height);
for(int y = 0; y < height; y++) {
row_pointers[y] = (png_byte*)malloc(png_get_rowbytes(png,info));
}

我的问题是:在这段代码之后,我的图像被复制到 row_pointers 中,我想将它复制到 png_byte map[x][y] 中,这样我就可以轻松地逐像素工作。有人可以帮助我吗?谢谢

最佳答案

好的。那是指向指针的指针!

png_bytep = 指向 png_byte 的指针

如果您消除 png_bytep 并只使用 png_byte,您的代码将如下所示。

int height = 10;
int width = 20;

png_byte **row_pointers;
row_pointers = (png_byte**)malloc(sizeof(png_byte*) * height); <-- This is basically your number of rows.. ie height of your matrix.
for(int y = 0; y < height; y++)
{
row_pointers[y] = (png_byte*)malloc(sizeof(png_byte)*width); <-- This is representing number of elements in each row.. so width.

}

假设您的结构有两个整数 x 和 y。您必须按以下方式提交数据..

for(int i=0;i< height;i++)
{
for (int j=0;j<width;j++)
{
row_pointers[i][j].x = i*j;
row_pointers[i][j].y = i*j;
}
}

假设您的 map 也有类似的结构。这就是您复制数据的方式..

for(int i=0;i< height;i++)
{
for (int j=0;j<width;j++)
{
map[i][j].x = row_pointers[i][j].x;
map[i][j].y = row_pointers[i][j].y;
}
}

关于c - 语法不清楚指针和矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20950535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com