C语言结构体数组的定义和赋值

2025-03-11 08:18:46
推荐回答(2个)
回答1:

C99标准出来以前,C语言不支持动态定义数组大小,只能采用动态分配指针方式来完成动态数组的个数定义。如:
struct st {
int x,y;
char str[10];
};
struct st *array ;
int n;
printf("input n: "); scanf("%d", &n);
array=(struct st*)malloc(n*sizeof(struct st)); //动态分配n个结构体空间,接下来array的操作,与数组操作是相同的,如:array[0].x=1 ;
C99以后,C语言标准开始支持动态定义数组,但动态数组,在其确定个数之后,在其生命期中,就不可变了。如:

struct st {
int x,y;
char str[10];
};
int n;
printf("input n: "); scanf("%d", &n);
struct st array[n] ; //定义动态数组
array[0].x=1 ;

回答2:

BookInformation *p= new BookInformation("家春秋","巴金","小说","人民文学出版社","23272989",3);
book[0]= *p;

//前提 你有有参数构造函数