结构体类型的指针引用成员变量,给成员变量用scanf怎么赋值?

2024-12-14 17:12:53
推荐回答(5个)
回答1:

实际上,用scanf对通过指针引用的结构体变量赋值与常规的scanf用法没有差异。举例如下:

#include 

/* 声明结构体 myStruct */
struct myStruct
{
    int x;
    char s[100];
};

void main()
{
    myStruct ms;
    /*结构体指针*/
    myStruct *p = &ms;
    
    /**
    * scanf参数列表需要各个变量的地址。下面的语句中:
    * p->x通过指针取出了成员变量x;&(p->x)取出了该成员变量的地址
    * p->s通过指针取出了字符数组成员变量s;而p->s就是字符数组的首地址
    **/
    scanf("%d,%s", &(p->x), p->s);
    
    /*输出*/
    printf("%d, %s\n", p->x, p->s);
}

回答2:

ga是指针变量,没有给它分配内存,可以用malloc函数

回答3:

#include //加上头文件
#define N 6
#include
#include
typedef struct
{
int x[N],y[N];
}graph;

void main()
{
int i=1;
graph *ga;
ga = ((graph *)malloc(sizeof(graph))); //给它分配一个 graph 大小的空间
scanf("%d %d",&(ga->x[i]),&(ga->y[i]));
printf("%d %d\n",ga->x[i],ga->y[i]);
}

没有错误,那 是警告,local variable 'ga' used without having been initialized 是说你没有给 ga初始化,如果你没有给指针分配空间的话,输入的值就不知道放在那里了,所以输入的时候,就给提示你XX.exe 已经停止工作了……

回答4:

你需要定义结构体类型的变量啊
例如:
graph a, *ga;
ga = &a; //ga指向a
scanf(.....,&(ga->x[i]...);
这样才是可以的。

回答5:

定义ga不能是指针类型的,指针类型是指可以存该类型的地址,在这没有意义的