为什么C语言用int*a来声明指针变量,而不是int&a声明

应该是写法造成的误解。建议写成 int* a = &b;就清楚多了。a的类型是int*,值是&b,C语言连续声明指针变量的时候又有点问题写成int* a, b, c;结果只有a是指针,b和c就是简单的整形变量了。

应该是写法造成的误解。建议写成 int* a = &b;就清楚多了。a的类型是int*,值是&b,C语言连续声明指针变量的时候又有点问题写成int* a, b, c;结果只有a是指针,b和c就是简单的整形变量了。这种时候又需要写成int *a, *b, *c;这就属于容易出错的地方了,所以定义指针的时候建议分开定义。

熟悉C语言的特性,包括他的缺点,才能在开发的过程中少挖坑少掉坑,所以C语言四大名著中有两本来讲这些问题。

C语言里边,变量声明后边的 = 符号跟赋值语句的的 = 符号含义不同。后来C++也继承了这个特性。而这可能是给题主造成困惑的核心。

int *a = &b;

实际上可以理解为

int *(a = &b);    // 只是示意,当然这样写是不对的

也就是说,先把&b赋值给a,然后令 *a 的类型为 int。

所以这里 &b 是赋值给 a 而不是赋值给 *a。

不过这里就存在一个矛盾:赋值语句的 = 符号的优先级低于 * 号的,为什么这里先计算等于号后计算星号?按照运算符优先级规则,此处的 &b 应当赋值给 *a 才对。

延伸阅读:

什么是C语言?

C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%-20%。因此,C语言可以编写系统软件。

当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。

文章标题:为什么C语言用int*a来声明指针变量,而不是int&a声明,发布者:小编,转载请注明出处:https://worktile.com/kb/p/39221

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月22日
下一篇 2023年2月22日

相关推荐

  • pcm编码由哪些部分构成

    pcm编码由三部分构成:1、极性码;2、段落码;3、段内码。极性码是指,数字通信系统中用来表示二进制信息“1”和“0”的码型。根据表示方法的不同,极性码可以分为单极性归零码、单极性不归零码、双极性归零码、双极性不归零码等。 一、构成pcm编码的三部分 二、pcm编码的转换过程 延伸阅读 极性码分类

    2023年1月6日
    1.8K00
  • devops和aiops是什么意思

    开展讨论,DevOps与AIOps关乎现代软件开发及运维的智能化。DevOps强调开发与运营的紧密协作,加速交付周期;AIOps借助人工智能技术,自动化运维工作,优化系统性能与可用性。针对后者,AIOps实现故障预知及自愈功能,利用机器学习处理大量运维数据,继而精确预测及迅速响应系统问题。 一、DE…

    2024年3月26日
    14200
  • DevOps与自动化部署工具的对比

    DevOps与自动化部署工具的核心差异在于目标、范围和实现方式。1、目标:DevOps关注于文化和流程改善,而自动化部署工具则更侧重于技术实现。2、范围:DevOps是一种全面的方法论,覆盖软件交付周期的多个方面,而自动化部署工具通常是DevOps流程中的一个环节。3、实现方式:DevOps通常需要…

    2023年9月13日
    49400
  • 阿里巴巴okr工具是什么

    阿里巴巴的okr工具是一种基于目标和关键结果的管理方法,旨在帮助团队和个人设定可量化的目标,并跟踪进度以实现目标。该工具有助于有效地规划、执行和评估工作,同时提高团队成员之间的协作和沟通。 一、阿里巴巴okr工具是什么 阿里巴巴的okr工具是一种基于目标和关键结果的管理方法,旨在帮助团队和个人设定可…

    2023年4月4日
    50400
  • GitHub上可供新手阅读和玩耍的Java项目有哪些

    GitHub上可供新手阅读和玩耍的Java项目有:1、newbee-mall;2、vhr;4、SSM;5、fiction_house。newbee-mall是一个基于 Spring Boot 2.X 及相关技术堆栈开发电子商务系统。包括商场系统和商场背景管理系统,支持商场的共同功能。项目代码开源,功…

    2023年2月6日
    76100
  • 编程m5是什么意思

    M5在编程中可能不是一个标准术语,但通常可能表示与编程相关的几种不同的事物。以下是对M5的可能含义: 1、Milestone 5(里程碑5):在软件开发中,M5可能指的是第五个重要的开发阶段或里程碑。这通常是一个预定的点,到这里已经完成了特定的功能和优化,软件可能已经接近最终发布状态。 2、M5St…

    2024年4月26日
    400
  • 云原生应用的API管理如何实现

    本文针对云原生应用在API管理层面的实现方式进行阐述,明确指出云原生应用的API管理是云计算环境中处理应用程序接口的一种方法。主体包含:定义API网关、实施服务网格、使用API管理平台、实现安全性和合规性、保障监控和分析五个核心观点。API网关是API的入口点,负责请求路由、身份验证等。服务网格则提…

    2023年11月15日
    21300
  • oa系统哪家做得好

    标题:OA系统开发公司排名分析 摘要:在现代企业管理中,OA(办公自动化)系统发挥着举足轻重的角色。评选出一流的OA系统供应商关键在于其系统功能的全面性、用户体验的友好性、定制能力及售后服务水平。《福布斯》杂志公布的排名显示,1、微软因其Office 365套件而遥遥领先;2、谷歌凭借G Suite…

    2024年1月11日
    30600
  • 如何有效进行项目统计管理

    项目统计管理是项目管理中的关键步骤,用于确保项目目标的实现和效果的衡量。有效的方法包括定期的进度跟踪、使用统计软件工具、运用统计方法设计项目计划、监控关键绩效指标(KPIs)、实施敏捷统计管理、进行风险分析与控制。在这些策略中,监控关键绩效指标(KPIs)尤其重要,因为它提供了项目健康度的即时快照,…

    2024年4月10日
    6300
  • ci/cd的优点是什么

    ci/cd的优点是:1、超越测试自动化;2、自动修改众多环境;3、允许频繁部署代码;4、能够获得持续改进;5、缩减部署时间。质量保证工程师使用自动化测试框架来编写、执行和自动化各种测试,向开发团队表明构建的软件是成功还是失败。 一、超越测试自动化 质量保证工程师使用自动化测试框架来编写、执行和自动化…

    2023年4月30日
    65000

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部