C语言中结构体的指针赋值
#include<stdio.h>
#include<malloc.h>
struct structure{
int m;
int n,p,q;
};
void main()
{
struct structure p;
p1={1,2,3,4};
printf("%d %d %d %d \n",p.m,p.n,p.p,p.q); //此处显示错误 syntax error : '{'
struct structure p1={1,2,3,4};
printf("%d %d %d %d \n",p1.m,p1.n,p1.p,p1.q);
struct structure *p2=(struct structure *)malloc(sizeof(struct structure));
*p2={1,2,3,4}; //此处显示错误 syntax error : '{'
printf("%d %d %d %d \n",p2.m,p2.n,p2.p,p2.q);
}
问题:在C中结构体只能赋初值吗?为什么会出现这种错误呢?
结构体中只能这样p1.m=1;p1.n=2;p1.p;p1.q=4;或p2->m=1;p2->n=1;p2->p=1;p2->q=1;或给各个成员赋值吗?不赋初值,先定义变量,再整体赋值不行吗?