c语言结构的一个简单问题,帮下忙!

来源:百度知道 编辑:UC知道 时间:2024/06/24 07:00:44
#include<stdio.h>
struct area {
int x;
};
struct why {
int y;
};
void main()
{
struct area *A;
struct why *B;
scanf("%d",&A->x);
scanf("%d",&B->y);
printf("A = %d B = %d\n",A->x,B->y);
}
为什么A->x,B->y的值一样,是两个结构里的值啊,为什么呀??
怎么初始化呢,谢谢
我说的是printf后的值是一样的,为什么? 唉...
回答者:merryhongxia - 江湖新秀 五级 这样不行,不行

回答者: 如水无道 - 魔法师 四级 请问为什么不能用指针

没有给结构体指针开辟空间
void main()
{
struct area *A=(struct area*)malloc(sizeof(struct area));/*给A开辟空间*/
struct why *B=(struct why*)malloc(sizeof(struct why));/*给B开辟空间*/
scanf("%d",&A->x);
scanf("%d",&B->y);
printf("A = %d B = %d\n",A->x,B->y);
}

#include<stdio.h>
struct area {
int x;
}A = {8};
struct why {
int y;
}B = {9};
void main()
{
/*struct area *A;
struct why *B;
scanf("%d",&A->x);
scanf("%d",&B->y); */
printf("A = %d B = %d\n",A.x,B.y);
}
/*这样初始化可以吗~~*/

struct area A;
struct why B;
scanf("%d",&A.x);
scanf("%d",&B.y);
printf("A = %d B = %d\n",A.x,B.y);

如果你问这2句scanf("%d",&A->x);和scanf("%d",&B->y);之前值为什么一样。那是因为编译器在变量定义的时候会给一个初始值,这个值不同的编译器不一样。

编译正常,输入输出正常。