在C语言中,使用结构体的时候 "->" 和 “." 有什么区别,越详细越好,谢谢?

 我来答
wxw072
2010-09-13 · TA获得超过3954个赞
知道小有建树答主
回答量:1079
采纳率:0%
帮助的人:122万
展开全部
貌似没有区别。

有几种访问结构体的方法:
访问结构成员的运算符有两种,一种是结构成员运算符“·”,也称为“圆点运算符”,另一种是结构指针运算符“->”,也称“箭头运算符”。
结构成员运算符通过结构变量名访问结构体的成员。例如:
printf("%s",student.name);
结构指针运算符由减号“-”和“>”组成(中间没有空格),它通过指向结构的指针访问结构的成员。假定声明了指向struct student的指针sPtr,并且把结构student1的地址赋给了sPtr,如下列语句通过指针sPtr打印了结构student1的成员name:
printf("%s",sPtr->name);
不要在结构指针运算符的-和>之间插入空格。
在用指针和结构成员运算符引用结构成员时一定要用圆括号(*sPtr).name,因为结构成员运算符“.”比指针复引用运算符“*”的优先级高,所以圆括号是必须的。
下面的程序演示了结构成员和结构指针运算符的用法:
#include<stdio.h>
struct student
{char *name;
char *sex;
};
main()
{
struct student student1;
struct student *sPtr;
student1.name="Tom";
student1.sex="male";
sPtr=&student1;
printf("%s%s%s\n%s%s%s\n%s%s%s\n",
student1.name,"'s sex is",student1.sex,
sPtr->name,"'s sex is",sPtr->sex,
(*sPtr).name,"'s sex is",(*sPter).sex);
return 0;
}

参考资料: http://www.englishfree.com.cn/schoolfree/cn/computer/text/c/012-03.htm

大宝与莹宝
高粉答主

2018-03-31 · 每个回答都超有意思的
知道大有可为答主
回答量:184
采纳率:0%
帮助的人:6.6万
展开全部

定义的结构体如果是指针,访问成员时就用->

如果定义的是结构体变量,访问成员时就用.

指针引用任何变量都是这样引用的 ,规定的

我忘了 Ex = {10,99}; 这样的初始化是否合法了,如果合法的话,那就是编译器做了工作,把 

Ex = {10,99}; 转换成了 (*Ex.a) = 10;Ex.b = 99;

结构体成员运算符。

->指针运算符。

1、如果结构体中的成员均为一般变量(包括结构体变量),则使用“.”,如果成员变量为指针(不管指向什么,包括结构体),则使用“->”。

2、如果定义了结构体数组指针,则可分别使用“.”和“->”,区别在于指针带下标时,以是数组形式访问,此时用“.”,如果不带下标(或使用偏移),此时用“->”。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友54fd645
推荐于2017-11-23 · TA获得超过426个赞
知道答主
回答量:40
采纳率:100%
帮助的人:19.5万
展开全部
定义的结构体如果是指针,访问成员时就用->
如果定义的是结构体变量,访问成员时就用.

例如:
struct AAA {
int a;
char b;
};

struct AAA q; 访问成员就用:q.a;
struct AAA *p; 访问成员就用:p->a;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Icrazyaaa
2012-03-16
知道答主
回答量:19
采纳率:0%
帮助的人:5.4万
展开全部
在C语言中,使用结构体的时候 "->" 和 “."
Struct ABC//声明一个Struct ABC的为结构体类型
{ //结构体类型中的元素
Int a;
Char b;
Char c[20];
};
Struct ABC abc;//定义一个Struct ABC类型的变量abc
Struct ABC *P;//定义一个Struct ABC类型的指针变量p

P=&abc;//将结构体变量abc的地址赋给指针变量p

//***是你要给变量赋的值
//下面三种方法都行!!!
//结构体变量abc后跟点.
abc.a=***;
abc.b=***;
abc.c=***;
//指针p是结构体变量abc的地址,后跟->
p->a=***;
p->b=***;
p->c=***;

//注意,括号不能省略,因为点.的优先级高于星号*
//(*p)相当于结构体变量,后跟点.
(*p).a=***;
(*p).b=***;
(*p).c=***;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fhqzxr
2010-09-13 · TA获得超过495个赞
知道小有建树答主
回答量:658
采纳率:0%
帮助的人:436万
展开全部
这个没必要详细,一说你就明白.
结构体变量用点;结构体变量的指针用箭头.
你应该知道箭头本身就是用于指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式