我写了这个程序:数组指针结构
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct inventory{
int ID;
char name[20];
int value;
};
int main()
{
struct inventory *inv;
inv = malloc(sizeof(1));
inv[0].ID = 10;
strcpy(inv[0].name,"hello charlie old mate");
inv[0].value = 20;
inv[1].ID = 20;
printf("%d", inv[1].ID);
return 0;
}
你能告诉我怎样才能inv[1].ID
被设置为20.当我为inv
仅配置了1个存储字节。它如何携带多个结构的数据?
你有没有听说过*未定义的行为*? – haccks
“当我为inv分配一个字节的内存时”是错误的。代码分配给'sizeof(1)'字节,当然不是1,但更可能是4. – chux
只是为了详细说明@chux sir所说的,'sizeof'考虑的是数据类型,而不是_value_,文字'1'是类型'int'。 :) –