在下面的示例中,为什么我不能使用
scanf("%s%d%d", p.name, p.age, p.code);
如果变量p已经有一个地址,那么为什么我需要放置 &p->age而不是p.age?为什么我需要使用 'p->name' 从键盘读取字符串而不是p.nameor &p->name?如果p->name相等(*p).name,并且需要一个地址,那么如果将指向的值传递给函数,它会scanf("%s",&variable)如何工作?(*p).namescanfp
#include <stdio.h>
#include <stdlib.h>
struct person{
char name[60];
int age;
int code;
};
void printdata(struct person *p){
printf("%s, %d, %d",p->name, p->age, p->code);
}
int main(int argc, char *argv[]){
struct person *p;
p = (struct person*) malloc(sizeof(struct person));
scanf("%s%d%d", p->name, &p->age, &p->code);
printdata(p);
free(p);
return 0;
}