在下面的示例中,为什么我不能使用
scanf("%s%d%d", p.name, p.age, p.code);
如果变量p
已经有一个地址,那么为什么我需要放置 &p->age
而不是p.age
?为什么我需要使用 'p->name' 从键盘读取字符串而不是p.name
or &p->name
?如果p->name
相等(*p).name
,并且需要一个地址,那么如果将指向的值传递给函数,它会scanf("%s",&variable)
如何工作?(*p).name
scanf
p
#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;
}