C语言中.与->的区别详细解析

 更新时间:2023年06月19日 09:54:30   作者:One day️  
这篇文章主要给大家介绍了关于C语言中.与->区别的相关资料,这虽然是个小问题,但有时候很容易让人迷惑,因为有的时候用混淆了,程序编译不通过,需要的朋友可以参考下

->前是指针,而 . 前是结构体变量

首先 a->b 的含义是 (*a).b ,所以他们是不同的,不过的确 -> 可以用 *. 实现,不需要单独一个运算符。 嗯,我这是说现代的标准化的 C 语义上来说, -> 可以用 *. 的组合实现。

早期的 C 有一段时间的语义和现代的 C 的语义不太一样。

稍微有点汇编的基础的同学可能知道,在机器码和汇编的角度来看,不存在变量,不存在 struct 这种东西,只存在寄存器和一个叫做内存的大数组。

结构体变量用 . 来访问结构体的成员如下:

#include<stdio.h>
#include <malloc.h>
struct stu{
	int  age;
	stu* next;
};
int main(){
	stu s1;
    s1.age =18;
	return 0;
}

指向结构体的指针用->来访问其指向的结构体的成员如:

#include<stdio.h>
#include <malloc.h>
struct stu{
	int  age;
	stu* next;
};
int main(){
	stu *phead = (stu*)malloc(sizeof(stu));//测试代码 
    phead->age=18;
	phead->next = NULL;
	stu* p = phead;
	return 0;
}

简单点说就是: 

1、A->a表示A是指向结构体的指针 

2、A.a表示A是结构体 

3、A->a等效于(*A).a

4、A.B则A为对象或者结构体;

5、A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;

6、(*a).b 等价于 a->b。"."一般情况下读作"的”; “->”一般读作"指向的结构体的"。也就是说在结构中,运算符->是运算符*和运算符.的结合

7、“->”是指向结构体成员运算符。“.”是断点符号,不属于运算符。

8、“->”所指向的是结构体或对象的首地址。“.”所指向的是结构体或对象。

9、“->”的用处是使用一个指向以便访问结构体或对象其内成员。“.”的用处是使用一个指向以便访问结构体或对象。

此外,(*a).b 等价于 a->b。

"."一般情况下读作"的”。

“->”一般读作"指向的结构体的"。

总结

到此这篇关于C语言中.与-&gt;区别的文章就介绍到这了,更多相关C语言.与-&gt;的区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言线性表顺序存储结构实例详解

    C语言线性表顺序存储结构实例详解

    这篇文章主要介绍了C语言线性表顺序存储结构实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • VScode platformio使用的详细步骤

    VScode platformio使用的详细步骤

    使用VSCode作为编辑器,同时借助PlatformIO插件,可以帮助开发者更加高效地进行嵌入式开发,本文主要介绍了VScode platformio使用的详细步骤,感兴趣的可以了解一下
    2023-10-10
  • C++表达式new与delete知识详解

    C++表达式new与delete知识详解

    这篇文章主要为大家详细介绍了C++表达式new与delete知识点,学习如何动态创建对象,动态创建的对象与一般对象的区别,动态创建的对象的初始化以及释放动态分配的内存等知识点,感兴趣的朋友可以参考一下
    2016-05-05
  • c_str()的用法详细解析

    c_str()的用法详细解析

    c_str()就是把string类对象转换成和c兼容的char *类型。这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式
    2013-09-09
  • C++11中强类型枚举的使用

    C++11中强类型枚举的使用

    本文主要介绍了C++11中强类型枚举的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • C++模板类的用法

    C++模板类的用法

    这篇文章主要介绍了C++模板类的用法,实例讲述了模板类的概念及相关用法,需要的朋友可以参考下
    2014-10-10
  • 深入了解c语言的循环语句

    深入了解c语言的循环语句

    这篇文章主要为大家介绍了c语言的循环语句,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 零基础学习C/C++需要注意的地方

    零基础学习C/C++需要注意的地方

    这篇文章主要介绍了零基础学习C/C++需要注意的地方,文中讲解非常细致,供大家参考和学习,想要学习C/C++的可以阅读此文
    2020-06-06
  • C语言图书管理系统简洁版

    C语言图书管理系统简洁版

    这篇文章主要为大家详细介绍了C语言图书管理系统简洁版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C语言初阶之数组详细介绍

    C语言初阶之数组详细介绍

    大家好,本篇文章主要讲的是C语言初阶之数组详细介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12

最新评论