关于结构体内引用成员方式的问题 -> 和 .

来源:百度知道 编辑:UC知道 时间:2024/05/24 01:11:04
->符号好像是C++的类中才使用的引用符号吧.
. 是C和C++都可以使用的符号.
不知道我理解的对不对,我在赋值中,有时候使用 . 来结构体引用成员出现错误: expression must have struct or union type
然后改用->引用就不报错了.我很纳闷,有人知道为什么吗?用 . 有什么不对吗?

结构体引用成员变量有两种操作符,即'->'和'.'。
具体使用哪种方式,取决于结构体变量的类型。

struct test
{
int a;

};
为例,说明如下。
1 结构体指针变量。
定义
struct test *v;
访问v中的成员a需要写作v->a。

2 结构体变量。
定义
struct test v;
访问v中的成员a需要写作v.a。

3 二者转换。
由于指针本质为地址,所以二者是可以转换的。
struct test v, *p;
p = &v;
这时,v.a和p->a是标准的写法,但是(&v)->a和(*p).a同样也是合法的访问成员的表达式。但是由于写法上并不便捷,所以代码中很少见到,只是从C规范上来说,这样的写法都是合法的。

不是..->是快捷对指针取值的符号

p是指针

(*p).val 相当于 p->val

struct SS
{
int a;
char b;
};

void main()
{
SS s;
SS *ps;

s.a = 0;
s.b = 'b';

ps = &s;

printf("%d,%c\n%d,%c\n",s.a,s.b,ps->a,ps->b);
}
看出来没有??
指针用->,对象用.