0
#include<stdio.h>
#define STORAGESIZE 5
#define MAX_NAME_LEN 2

typedef struct{
      char name[MAX_NAME_LEN];
      char feild1;
      char feild2;
  } strt;
  static strt storage[5];

main(){
 unsigned char *stp=(unsigned char*)&strt;
 unsigned char*stp_end=(unsigned char*)(&strt+STORAGESIZE);
 int i;

 for(i=0;stp!=stp_end;stp++,i++)
   printf("byte%d: %x\n",i,*stp);

}

我试图确认声明为静态的所有结构都将初始化为 0,除了它的填充部分。尝试编译上述内容时出现错误:statictable.c:

In function 'main':
statictable.c:13:38: error: expected expression before 'strt'
statictable.c:14:42: error: expected expression before 'strt'


将强制转换的指针分配给另一个指针可能有什么问题。尽管我知道这可能是初步的。

4

2 回答 2

4

在行中:

unsigned char *stp=(unsigned char*)&strt;

您给出指向strtwhich 是类型而不是变量的指针。我就像&int(也无效:)),你应该这样做:

unsigned char *stp=(unsigned char*)storage;

下一行也是如此。

于 2012-08-06T04:50:55.137 回答
1

在这两行中:

unsigned char *stp=(unsigned char*)&strt;
unsigned char*stp_end=(unsigned char*)(&strt+STORAGESIZE);

您正在尝试获取类型的地址: strt。你想要你的strt数组的地址:storage

于 2012-08-06T04:51:15.107 回答