struct student
{
int num;
char name[20];
char sex;
int age;
};
struct student stu[3]={{101,"AA",'M',19},{102,"BB",'M',20},{103,"CC",'F',21}};
struct *p;
p=(struct student *)stu[0].name; /*这一步是不是把stru[0].name转换为结构体指针型,然后赋给P?*/
我想输出:
AA M 19
BB M 20
CC M 21
请问该怎样做?
----------------解决方案--------------------------------------------------------
你的结构指针变量定义好像有问题.
应这样struct student *p;
#include<stdio.h>
struct student
{
int num;
char name[20];
char sex;
int age;
};
main()
{
struct student stu[3]={
{101,"AA",'M',19},{102,"BB",'M',20},{103,"CC",'F',21}};
struct student *p;
int i;
for(p=stu;p<stu+3;p++)
printf("\n%s\t%c\t%d",p->name,p->sex,p->age);
}
----------------解决方案--------------------------------------------------------
上楼的你好像没有给 “p” 赋初值吧?
----------------解决方案--------------------------------------------------------
首先
你的这个定义有问题~~~~~~~~~~struct *p;
应该定义为struct student *p;
因为struct不能单独表示一种特定的结构体类型
这样定义后,就不用你下面的这个转换了,因为是同一种结构体类型~~
p=(struct student *)stu[0].name;
2楼的初值在for语句里面
for(p=stu;p<stu+3;p++)
p=stu,这个
----------------解决方案--------------------------------------------------------
我在倒数第二行的循环里给p赐值了
----------------解决方案--------------------------------------------------------