C语言中结构成员的引用时,'.'与'->'的区别在哪里?什么时候用’ . ',什么时候用'->'?
#include<stdio.h>structdate{intyear;intmonth;intday;};structstudent{intnum;charname[1...
#include<stdio.h>
struct date
{
int year;
int month;
int day;
};
struct student
{
int num;
char name[10];
struct date birthday;
};
void main()
{
int i;
struct student stu[4]={{001,"luoyi",1989,06,23}, //定义结构数组并定义
{002,"xiaoli",1990,01,27},
{003,"zengtao",1993,07,28},
{004,"chen",1991,10,23}};
struct student *p;
p=stu; //定义结构指针变量并使其指向结构数组首地址
printf("1--(下标法)学好 姓名 出生日期:\n");
for(i=0;i<4;i++)
{
printf(" %d %8s %d-%d-%d\n",(stu+i)->num,(stu+i)->name,(stu+i)->birthday.year,(stu+i)->birthday.month,(stu+i)->birthday.day);
}
printf("2--(下标法)学好 姓名 出生日期:\n");
for(i=0;i<4;i++)
{
printf(" %d %8s %d-%d-%d\n",stu[i].num,stu[i].name,stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day);
}
printf("3--(指针法)学好 姓名 出生日期:\n");
for(i=0;i<4;i++)
{
printf(" %d %8s %d-%d-%d\n",(*(p+i)).num,(*(p+i)).name,(*(p+i)).birthday.year,(*(p+i)).birthday.month,(*(p+i)).birthday.day);
}
printf("4--(指向运算符)学好 姓名 出生日期:\n");
for(i=0;i<4;i++)
{
printf(" %d %8s %d-%d-%d\n",(p+i)->num,(p+i)->name,(p+i)->birthday.year,(p+i)->birthday.month,(p+i)->birthday.day);
}
} 在此程序中,为什么第一个下标法无法用'.'? 第二个下标法无法用‘->' ? 当嵌套时,引用嵌套里的成员,如(stu+i)->birthday.year,在birthday与year之间只能用'.'吗? 实在是有点糊涂了,请高手指教~~~
都说的太片面,没有说到点上~~~ 展开
struct date
{
int year;
int month;
int day;
};
struct student
{
int num;
char name[10];
struct date birthday;
};
void main()
{
int i;
struct student stu[4]={{001,"luoyi",1989,06,23}, //定义结构数组并定义
{002,"xiaoli",1990,01,27},
{003,"zengtao",1993,07,28},
{004,"chen",1991,10,23}};
struct student *p;
p=stu; //定义结构指针变量并使其指向结构数组首地址
printf("1--(下标法)学好 姓名 出生日期:\n");
for(i=0;i<4;i++)
{
printf(" %d %8s %d-%d-%d\n",(stu+i)->num,(stu+i)->name,(stu+i)->birthday.year,(stu+i)->birthday.month,(stu+i)->birthday.day);
}
printf("2--(下标法)学好 姓名 出生日期:\n");
for(i=0;i<4;i++)
{
printf(" %d %8s %d-%d-%d\n",stu[i].num,stu[i].name,stu[i].birthday.year,stu[i].birthday.month,stu[i].birthday.day);
}
printf("3--(指针法)学好 姓名 出生日期:\n");
for(i=0;i<4;i++)
{
printf(" %d %8s %d-%d-%d\n",(*(p+i)).num,(*(p+i)).name,(*(p+i)).birthday.year,(*(p+i)).birthday.month,(*(p+i)).birthday.day);
}
printf("4--(指向运算符)学好 姓名 出生日期:\n");
for(i=0;i<4;i++)
{
printf(" %d %8s %d-%d-%d\n",(p+i)->num,(p+i)->name,(p+i)->birthday.year,(p+i)->birthday.month,(p+i)->birthday.day);
}
} 在此程序中,为什么第一个下标法无法用'.'? 第二个下标法无法用‘->' ? 当嵌套时,引用嵌套里的成员,如(stu+i)->birthday.year,在birthday与year之间只能用'.'吗? 实在是有点糊涂了,请高手指教~~~
都说的太片面,没有说到点上~~~ 展开
3个回答
展开全部
在结构体中要访问成员有两种方式:
1,通过“.”,它在什么情况下都能用!
2,通过“->‘,他是当局部变量屏蔽了全局变量时,而你又要访问全局变量时用的!{你应该知道这种情况下以局部变量的值为准!所以才出现了-> !}
1,通过“.”,它在什么情况下都能用!
2,通过“->‘,他是当局部变量屏蔽了全局变量时,而你又要访问全局变量时用的!{你应该知道这种情况下以局部变量的值为准!所以才出现了-> !}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
记住,通过指针获取成员时用->。
回答完毕。
回答完毕。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通过结构体指针访问结构体成员时,使用->
例如:
struct student
{ char num[10];
char name[20];
char sex[2];
int age;
}stu;
struct student *p=&stu;
欲给结构体变量stu的age成员赋值18,有三种写法:
stu.age=18
p->age=18 等价于 (*p).age=18
后两种写法都是通过指针访问结构体的成员。
例如:
struct student
{ char num[10];
char name[20];
char sex[2];
int age;
}stu;
struct student *p=&stu;
欲给结构体变量stu的age成员赋值18,有三种写法:
stu.age=18
p->age=18 等价于 (*p).age=18
后两种写法都是通过指针访问结构体的成员。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询