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

如题所述

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也用“.”,也可以理解成一种结构体。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-23
两个运算符号的优先级相同,但是"->"用于指向结构成员,它的左边应为指向该结构类型的指针(结构指针),而"."的左边应为该结构类型的变量(结构变量)。举个例子,这个结构有个结构指针structpoint,有个该结构类型的变量student,其中structpoint指向student,即*structpoint=student,那么structpoint->name=(*structpoint).name=student.name
第2个回答  2015-10-17
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;
}

##被称为连接符(直接贴合),用来将两个宏参数连接为一个宏参数。而单个#的功能是将其后面的宏参数进行字符串化操作,简单地说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号,使其成为字符串。
第3个回答  推荐于2017-09-04
在“结构”一单元中出现的->运算符成为“右箭头选择”,在使用中可以用new_node->value = 10;来代替(*new_code).value = 10;
也就是说在结构中,运算符->是运算符*和运算符.的结合,在上述语句中,他先对new_node间接寻址以定位所指向的结构,然后再选择结构的成员value。
第4个回答  2006-11-25
#是将输入参数加上""变为字符串,如,定义宏:
#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)
可见它可能编程一个真正的函数调用。

在C语言中,使用结构体的时候 "->" 和“." 有什么区别,越详细越好,谢谢...
1、如果结构体中的成员均为一般变量(包括结构体变量),则使用“.”,如果成员变量为指针(不管指向什么,包括结构体),则使用“->”。2、如果定义了结构体数组指针,则可分别使用“.”和“->”,区别在于指针带下标时,以是数组形式访问,此时用“.”,如果不带下标(或使用偏移),此时用“->...

在C语言中,使用结构体的时候 "->" 和“." 有什么区别,越详细越好,谢谢...
貌似没有区别。有几种访问结构体的方法:访问结构成员的运算符有两种,一种是结构成员运算符“·”,也称为“圆点运算符”,另一种是结构指针运算符“->”,也称“箭头运算符”。结构成员运算符通过结构变量名访问结构体的成员。例如:printf("%s",student.name);结构指针运算符由减号“-”和“>”组...

C语言中"."和"—>"的使用条件和区别是什么?
->是间接引用运算符,针对指针才能用,就是指针指向结构体成员。.是结构体名才能使用的。结构体名.数据成员;

c语言中什么时候用"->"什么时候用"."
pstu=&boy 在C++的字符和字符串中 \\ 代表转义符号。

C语言中和C++中 “->”和“.”的用法,有点搞不清容易搞乱,什么时候用...
类的指针下的方法或者对象,用-> 实例化的类的方法或者对象,用.例如 Class A *a;\/\/定义的是指针 a->……;在这时候用 Class A b; \/\/定义的实例 b.……;这时候是这样用

在C语言指针中 什么时候用 "." 什么时候用 "->"
当左边是个对象时用“.”当左边是个指向对象的指针时用“->”比如,Class A;Class *B=A;A有函数myfun()则调用时用 A.myfun();B->myfun();

请问C语言中的"."、"*"、"->"、"&"都有什么作用和区别?
2. `*`(指针运算符):用于声明指针变量。当出现在变量声明中时,它表示该变量是一个指针。例如,`int *a`声明了一个指向整数的指针变量`a`。此外,当与取地址运算符`&`结合时,`*`用于解引用指针,即获取指针指向的内存地址中的值。例如,`*a`表示解引用指针`a`,获取它指向的整数值。3. ...

请问C语言中的"."、"*"、"->"、"&"都有什么作用和区别?
int x;int y;};A a,定义一个结构体变量a,那么此时要想使用变量x,那么那就可以用:a.x,就可以使用x的值了。要是定义结构体指针变量即:A *a,那么要是使用使用变量x,就得:a->x,就可以使用x的值了。再比如:int *a,b=3;a=&b;此时定义一个整形指针变量a,即指针a指向的值是整形数据,...

C语言中 L->elem 和L.elem中L有什么不同,->和.用法有什么不同
L->elem 中L必须是指针,而L.elem中的L一定是普通结构体变量 ->和.都是引用结构体成员的运算符,前者是通过指针引用,而后者是通过变量引用

写c语言时候头文件后面用<>和用" "有什么区别吗?
C语言编译器会用一些目录存放公共头文件,如果则只在这些目录下找头文件,如果用""先在当前目录下找,如果找不到则在这些目录下找。\\x0d\\x0a\\x0d\\x0a不可能搜索所有目录,这样效率太低。\\x0d\\x0a\\x0d\\x0a一般来说,自己定义的头文件应该用"",因为这些文件放在工程目录(也就是编译器的...

相似回答