【发布时间】:2014-01-09 08:46:35
【问题描述】:
struct BOOK
{
char name[120];
char author[120];
int year[50];
};
int main (void)
{
int i;
int number;
struct BOOK* books;
number = 50000;
printf("before \nsizeofbooks %d \n sizeofBOOK %d\n",
sizeof(books), sizeof(struct BOOK));
books = (struct BOOK*)malloc(sizeof(struct BOOK) * number);
printf("sizeofbooks %d \n sizeofBOOK %d\n",
sizeof(books), sizeof(struct BOOK));
free(books);
return 0;
}
输出是:
before
sizeofbooks 4
sizeofBOOK 440
after
sizeofbooks 4
sizeofBOOK 440
即使我写入不同的数组,它也总是输出 4,但我希望它会改变。我做错了什么?
我的操作系统是 winxp 32 位,我使用代码块。
【问题讨论】:
-
你没有做错什么,你只是误解了事情的运作方式。指针不是数组。
-
@JeffRSon:我更喜欢那个骗子,因为它更类似于这个问题(并且答案非常适用)。
-
请注意,
typedef struct { ... } Book;将避免一直写struct。把它当作一个“类”很好。