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


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

在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「C语言从专业入门到高级教程+工具包」,点个关注,全部无偿共享给大家!!!

在评论区回复“888”,关注我之后私信回复“888”,即可拿走。

C 语言发明的时间很早,当时人们对"类型系统" 还很陌生,很多人还习惯将二进制字节作为唯一的数据类型。设计 C 语言的语法时,也不知是谁想出来的,有种设计哲学:让声明的形式与它的使用形式尽可能相似。在这种设计哲学下,是先想如何使用,再来逆推如何声明,这样 C 语言的声明语法显得有点古怪,


比如:

· 声明 int a; 使用时,a 的类型就是 int。

· 声明指针 int *b; 使用时,*b 的类型就是 int。

· 声明数组 int b[10]; 使用时用 b[0];

· 定义函数指针,int (*ptr)(int a, int b); 使用时,就是 (*ptr)(a, b); 可以简写成 ptr(a, b);

C 这种语法设计,在今天看来是不好。使用这种语法,程序员不可以直接从左往右读,有时甚至需要从中间往两边读。只是 C 语言的影响太大,人们常见类 C 的语法,C 语言有些不好的地方也就忍了。C++ 就继承了这种语法,甚至这种语法的设计哲学,反正我总记不住成员函数指针是怎么声明的。7c97b4739c3ee283b0ee4ab798f2a4b9.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/200435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP请求

前言 HTTP是应用层的一个协议。实际我们访问一个网页,都会像该网页的服务器发送HTTP请求,服务器解析HTTP请求,返回HTTP响应。如此就是我们获取资源或者上传资源的原理 HTTP请求报头格式 图片来自网络 HTTP请求报头总体有四部分:…

SR锁存器—>带EN的SR锁存器—>D锁存器—>边沿触发式D触发器—>寄存器

其实选择与非门当做构成SR锁存器的基本逻辑电路是有漏洞的,所以才导致了后续的都为低电平的时候,Q和非Q都是亮起的。但是我们设计的初衷是:Q和非Q是互斥的,是不能同时亮起的,且为了达到这一点,要使得其中两…

leetCode 47. 全排列 II + 回溯算法 + 图解 + 笔记

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列 示例 1: 输入:nums [1,1,2] 输出: [[1,1,2],[1,2,1],[2,1,1]] 示例 2: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2…

mysql数据库的字符集和字符校对规则

所谓字符集就是字符的编码,是怎么保存的,例如UTF-8。 所谓字符校对规则是指按照什么规则来比较字符,打个简单的比方,比较字符A和a的时候,忽略大小写,这就是一条规则。 详情可以查询mysql官网:h…

2024年天津财经大学珠江学院专升本专业课《管理学原理》考试大纲

天津财经大学珠江学院2024年高职升本科专业课考试《管理学原理》考试大纲 一、本大纲系天津财经大学珠江学院2024年高职升本科《管理学原理》课程考试大纲。所列考试范围出自徐碧琳主编的教材《管理学原理(第二版)》,机械工业出版社&#xff…

云服务器部署过程(从零开始)

首先介绍如何在 Linux 上复制粘贴 CtrlInsert,或者CtrlshiftC复制文本,使用ShiftInsert或CtrlshiftV 在终端中粘贴文本。 搭建java部署环境 要搭建java部署环境,那么首先就需要在Linux上安装jdk,MySQL等必需工具,接…

vscode git管理

vscode添加了git管理 1、如下按钮,可以看到本次的修改部分 2、安装git history 就可以查看每次的不同部分了

一句话搞定R语言画图|生存曲线、密度、山脊等130+图形任你选

大家好,今天我们分享一个神奇的网站,提供各种可视化图片的代码和详解,生信小博士公众号内回复冒号后面的关键词领取网站地址:神奇网站 1.一R代码添加显著性 1#1----set.seed(123)library(ggplot2)library(ggstatsplot)ggbetweens…

全网最新最全面的Appium自动化:Appium常用操作之设备操作

设备基本操作 前置条件: 示例代码: from appium import webdriver # 导入appium 驱动包 # 1、定义一个DesiredCapabilities配置的字典 des {automationName:appium,platformName:Android, # 平台的名称,iOS,Android,FirefoxOSplatformV…

软件测试人员必备的60个测试工具清单!

据统计,中国软件外包市场的潜力和机会已远远超过软件王国印度,不过由于软件人才的严重不足致使我国软件发展遭遇“瓶颈”。国家为了大力培养软件人才,不断采取积极有效的措施。我国对软件测试人才的需求数量还将持续增加,因此软件…

随时随地查看远程试验数据与记录——IPEhub2与IPEmotion APP

一 背景 在工况恶劣、空间狭小的试验场景或工程机械领域中,不但试验人员在试验环境中对自身安全没有保障,而且试验过程也会受到影响,如高温高压测试、工程机械液压系统测试等。对此,结合IPEhub2与IPEmotion APP,既可保…

【Linux】mkdir 命令使用

mkdir命令 mkdir(英文全拼:make directory)命令用于创建目录。 著者 作者:David MacKenzie。 mkdir命令 -Linux手册页 语法 mkdir [参数] [文件名] 命令选项及作用 执行令 : mkdir --help 执行命令结果 参数 …

【Java Web学习笔记】5 - XML

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/xml 零、在线文档 XML系列教程 一、XML引出 1.为什么需要XML 1.需求1 :两个程序间进行数据通信? 2.需求2:给一台服务器,做-一个配置文件,当服务器程序启动时,去…

vue3 setup语法糖 多条件搜索(带时间范围)

目录 前言: setup介绍: setup用法: 介绍: 前言: 不管哪个后台管理中都会用到对条件搜索带有时间范围的也不少见接下来就跟着我步入vue的多条件搜索(带时间范围) 在 Vue 3 中,你…

coding创建远程分支。并拉取远程新分支+推送代码

进入coding ----项目----代码仓库---点击 下拉之后查看全部----创建分支 创建分支之后执行下面命令 git branch -a // 查看所有分支 这个时候发现自己创建的分支没有显示这是因为自己在远程创建了分支但是本地还没有分支 执行 git fetch命令 用于从远程仓库获取最新的提交…

智能优化算法应用:基于混沌博弈算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于混沌博弈算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于混沌博弈算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.混沌博弈算法4.实验参数设定5.算法结果6.参考…

Linux【缓冲区】

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析(3) 目录 👉🏻缓冲区是什么?为…

VSCode + gdb + gdbserver调试ARM程序

在开发ARM嵌入式端C/C程序时,一般会在PC上编写代码,在Linux服务器上编译,然后将程序复制或挂载到ARM开发板上运行。如果程序出了问题,在不使用gdb的情况下,经常在代码中添加打印,编译,然后在开发…

SpringCloud 微服务集群升级记录(1.5.x-2.7.18)

前言 前段时间,因项目被扫出大量漏洞,全是因为依赖版本过低,存在高中危漏洞需要升级。正好本来也有规划集群升级,因为工作量大迟迟落实不了,正好有这次修漏洞的机会,升级微服务集群。这篇文章主要记录了本…

Java操作Excel之 POI介绍和入门

POI是Apache 提供的一个开源的Java API,用于操作Microsoft文档格式,如Excel、Word和PowerPoint等。POI是Java中处理Microsoft文档最受欢迎的库。 截至2023/12, 最新版本时 POI 5.2.5。 JDK版本兼容 POI版本JDK版本4.0及之上版本> 1.83.…