首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >总线错误10,结构内部存在结构的二维数组

总线错误10,结构内部存在结构的二维数组
EN

Stack Overflow用户
提问于 2017-02-13 21:30:47
回答 1查看 108关注 0票数 1

我在结构中填充结构的二维数组时遇到了问题。它允许我对像素做这个,pixels....etc。然而,一旦我增加了第一个索引,即pixels1,我得到了一个总线错误10。任何帮助都将不胜感激。我删减了一些代码,使其更具可读性,但如果您需要全部代码,请让我知道!这个程序正在做的是读取PPM图像并显示信息,我遇到的麻烦是存储图像的像素。

代码语言:javascript
复制
#define MAX_HEIGHT 4
#define MAX_WIDTH 4

typedef struct Pixel{

  int red;
  int green;
  int blue;

}Pixel;

typedef struct PPM{

  char code[2];
  int width, height;
  int max;
  Pixel * pixels[MAX_HEIGHT][MAX_WIDTH];


}PPM;

struct PPM * getPPM(FILE * fd){

   PPM * image = NULL;

   image = malloc(sizeof(PPM));

   //have got all the other PPM info here ask if needed


   int i;
   int j;


   for(i = 0; i<MAX_HEIGHT-1; i++){
     for(j = 0; j<MAX_WIDTH-1; j++){
       //  struct Pixel newPPM_Pixel;
       if(fscanf(fd, "%d %d %d", &image->pixels[i][j]->red, &image->pixels[i][j]->green, &image->pixels[i][j]->blue) == 3){
       //rgb_array[i][j] = newPPM_Pixel;
       printf("/ %d / %d  / %d", image->pixels[i][j]->red, image->pixels[i][j]->green, image->pixels[i][j]->blue);
      }
    }
  }

 return image;
}
EN

回答 1

Stack Overflow用户

发布于 2017-02-13 21:50:44

更改行:

代码语言:javascript
复制
Pixel * pixels[MAX_HEIGHT][MAX_WIDTH];

至:

代码语言:javascript
复制
Pixel pixels[MAX_HEIGHT][MAX_WIDTH];    //without an asterisk

这是声明二维数组的方法。如果你想让pixels成为一个指针,像这样声明它:

代码语言:javascript
复制
Pixel **pixels;

然后为它动态分配内存:

代码语言:javascript
复制
int i;
pixels = malloc (MAX_HEIGHT*sizeof(Pixel*));
if (pixels == NULL)
    printf ("Error allocating memory\n");
for (i = 0; i < MAX_HEIGHT; i++)
    pixels[i] = malloc(MAX_WIDTH*sizeof(Pixel));
    if (pixels[i] == NULL)
        printf ("Error allocating memory\n");

您可以阅读有关2D动态内存分配here的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42205282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档