C语言中,用"->"和用"."的区别

 我来答
yilonglucky
推荐于2017-10-10 · TA获得超过748个赞
知道小有建树答主
回答量:104
采纳率:0%
帮助的人:74.8万
展开全部
c语言中绝对有“->”和“.”!
这两个运算符都是用来访问结构体的。比如有结构体
struct student
{
int math;
int english;
};
并且有两个变量
struct student zhangsan;
struct student *p;
p=&zhangsan;
你要留意zhangsan是结构体的名字,p是指向这个结构体的指针。
那么访问结构体的两个变量时就只能用
zhangsan.math=60;
zhangsan.english=70;
p->math=80;
p->english=90;
即结构体的名字用点,相当于“的”,某个结构体的某个分量。
指向结构体的指针就用“->”,相当于指针指向的结构体的分量。(你看那箭头,就好比指针)
另外,在C语言中还有“位段”的概念,访问某个bit也用“.”,也可以理解成一种结构体。
haibasan
2011-08-23 · TA获得超过3996个赞
知道大有可为答主
回答量:1683
采纳率:33%
帮助的人:832万
展开全部
两个运算符号的优先级相同,但是"->"用于指向结构成员,它的左边应为指向该结构类型的指针(结构指针),而"."的左边应为该结构类型的变量(结构变量)。举个例子,这个结构有个结构指针structpoint,有个该结构类型的变量student,其中structpoint指向student,即*structpoint=student,那么structpoint->name=(*structpoint).name=student.name
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
投机士
2015-10-17 · TA获得超过10.5万个赞
知道大有可为答主
回答量:2.5万
采纳率:0%
帮助的人:3985万
展开全部
c语言中,##表示把两个宏参数贴合在一起,而单个#的功能是将其后面的宏参数进行字符串化操作。即,
#include<stdio.h>
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)
int main()
{
printf("%s\n",h(f(1,2)));//输出12
printf("%s\n",g(f(1,2)));//输出f(1,2)
return 0;
}

##被称为连接符(直接贴合),用来将两个宏参数连接为一个宏参数。而单个#的功能是将其后面的宏参数进行字符串化操作,简单地说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号,使其成为字符串。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秋水静轩
推荐于2017-09-04 · 知道合伙人软件行家
秋水静轩
知道合伙人软件行家
采纳数:206 获赞数:585
就读于西北农林科技大学--信息工程学院--软件工程专业,对软件开发、网页设计有较专业的知识。

向TA提问 私信TA
展开全部
在“结构”一单元中出现的->运算符成为“右箭头选择”,在使用中可以用new_node->value = 10;来代替(*new_code).value = 10;
也就是说在结构中,运算符->是运算符*和运算符.的结合,在上述语句中,他先对new_node间接寻址以定位所指向的结构,然后再选择结构的成员value。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fengjian_net
2006-11-25 · TA获得超过2866个赞
知道大有可为答主
回答量:1799
采纳率:50%
帮助的人:2520万
展开全部
#是将输入参数加上""变为字符串,如,定义宏:
#define p(s) put(#s)

使用宏p(hello world),则替换为:
put("hello world")

## 是连接符号
如,定义宏:
#define func(aa, bb, cc) aa##_##bb(cc)
则宏
func(average, sqrt, ref)
展开为
average_sqrt(ref)
可见它可能编程一个真正的函数调用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式