帮忙解答一道C语言题……

2024-12-18 14:25:33
推荐回答(4个)
回答1:

你已经声明了一个data,和一个p指针.想要让p指向data 数据域n,可以使用下面的语句:
p=&data
关于你的两种表达发,我查阅了潭教授的c 语言
他举了一例,我说明如下希望对你有斑竹:
struct student
int num;
char name[20];
char sex;
int age;
}stu[3],*p;
....
for(p=stu;pprintf(%5d% -20s %2c %4d\n",p->num,p->name,p->sex,p->age);
....
他指出p为指向结构体的指针,不应用来指向数组元素中的摸一成员例如下面的用法是不对的:
p=stu[1].name;编译错误,是类型不匹配.
如果要将摸一成员的地址副给p可以用强制类型转化
p=(struct student *)stu[0].name;
可以用printf("%s",p)输出stu[0]中name的值.

以下是我个人观点:
1.点语法在结构体调用中返回的是地址,所一无须&运算.

回答2:

p=data.n 因为data已经声明了,就好像:
sruct sk
{char *add;
long call[10];
}friend1,friend2;
我们可以:friend1=friend2;

*p=data.n这种写法是不正确的!

回答3:

结构体的指针能指向一个数值吗???

回答4:

p=&data.n