结构数组错误

时间:2013-09-21 08:32:15

标签: c struct extern

enter image description here

大家好, 从上面的图像。 我能够编译,但程序在运行时崩溃。 请告诉我解决这个问题的决议是什么? 谢谢

// structArray.h:

 #ifndef __STRUCTARRAY_H_
 #define __STRUCTARRAY_H_


typedef struct _vector{
     int* str;  
     int     maskSize;  
     // etc...
 }__attribute__((__packed__)) _vector_t;

 #endif /* _STRUCTARRAY_H_ */

**// do_structArray.c**

#include "structArray.h"

extern struct _vector_t t;

void do_structArray (void) {

int plaintext[2] = {0x05, 0x08};

_vector_t t[] = {
    {plaintext, sizeof(plaintext)},
    //{},
};

  printf("Content: \n%x \n", t[1].str[1]);  
}

// main : just calling do_structArray
#include <stdio.h>
#include <stdlib.h>

#include "structArray.h"

extern struct _vector_t t;

int main(int argc, char *argv[]) {    
do_structArray();

  system("PAUSE");  
  return 0;
}

2 个答案:

答案 0 :(得分:4)

您正在访问t[1]t中只有一个项目。试试printf("Content: \n%x \n", t[0].str[1])

答案 1 :(得分:3)

数组索引从C中的0开始。您正在访问超出数组末尾的数组元素。将索引更改为0:

printf("Content: \n%x \n", t[0].str[0]);