C语言 指向结构体成员运算符 10

->到底是神马意思.麻烦详细点,最好能举例说明我是不懂这个东西干嘛的... ->到底是神马意思.麻烦详细点,最好能举例说明
我是不懂这个东西干嘛的
展开
 我来答
悦己文化
高粉答主

2018-09-25 · 人群里也是很寂寞的。
悦己文化
采纳数:690 获赞数:51714

向TA提问 私信TA
展开全部

指向结构体成员运算符 : (->) 从外部看是包含了一个解指针(*)所以要对指针进行操作

例如:

typedef struct

{

int data[20];

int length;

}Sqlist;

Sqlist
*L;

L->lenth;
//同样是得到L中length的值

结构体成员运算符 : ( . )直接调用结构体中的某个成员

例如:

typedef struct

{

int data[20];

int length;

}Sqlist;

Sqlist L;

L.length; //直接调用L中length的值

L.data[3];

扩展资料:

结构体成员的点运算符(.)和箭头运算符(->)的区别:

相同点:两个都是二元操作符,其右操作符是成员的名称。

不同点:点操作符左边的操作数是一个“结果为结构”的表达式;箭头操作符左边的操作数是一个指向结构的指针。

如果一个函数的传入参数是结构体,且需要该结构体作为返回值的时候,必须采用指针传递的方式,其中对结构体赋值必须使用箭头运算符。

参考资料:

百度百科-->

菜鸟教程-C++ 运算符





和哈和呵2341
2018-09-25 · TA获得超过1.1万个赞
知道答主
回答量:34
采纳率:0%
帮助的人:9636
展开全部

1、指向结构体成员运算符 : (->) 从外部看是包含了一个解指针(*)所以要对指针进行操作。

eg. typedef struct

{

int data[20];

int length;

}Sqlist; //与上面完全一样

Sqlist *L;

L->lenth; //同样是得到L中length的值

2、结构体成员运算符 : ( . )直接调用结构体中的某个成员。

eg. typedef struct

{

int data[20];

int length;

}Sqlist;

Sqlist L;

L.length; //直接调用L中length的值

L.data[3];

扩展资料

左结合性和右结合性

C语言中各运算符的结合性分为两种:左结合性和右结合性。

例如:算术运算符的结合性是自左至右,即先左后右。

如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。

而自右至左的结合方向称为“右结合性”。 最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。

C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。(上文的优先级有分辨左右结合性)。

参考资料

运算符——百度百科

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
粲Lq
2018-01-07
知道答主
回答量:1
采纳率:100%
帮助的人:914
展开全部
为了使用方便和直观,C语言允许把(*p).num用p->num来代替,p->num表示p指向的结构体变量中的num成员。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天天向上_sl
2011-02-02
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
struct student
{
int num;
int name;
}

student.num
要用到结构体的数据必须要用这种方式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chen1983oki
2011-02-02 · TA获得超过135个赞
知道答主
回答量:31
采纳率:0%
帮助的人:21万
展开全部
结构体主要成员运算符有"."和" ->"
多用于修改结构成员的值。

以下是具体的例子

struct date{
int year;
int month;
int day;
};

int main(int argc, char* argv[])
{
char end;
struct date today;
struct date* pdate;
pdate=&today;

today.year=2011;
today.month=2;
today.day=1;

printf("year = %d\n\n",today.year);
printf("month = %d\n\n",today.month);
printf("day = %d\n\n",today.day);

printf("year = %d\n\n",pdate->year);
printf("month = %d\n\n",pdate->month);
printf("day = %d\n\n",pdate->day);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式