int *与int*

简介:

 第一个例子是我们喜闻乐见的C语言的指针变量定义啦:

1
int  a, *b, **c;

  相信很多人都被这种东西坑过,所以很多教科书都告诉我们,当定义一个变量的时候,类型最后的那些星号都要写在变量前面,避免让人误解。所以很多人都会想,为什么要设计成这样呢,这明显就是挖个坑让人往下跳嘛。但是在实际上,这是一个语法的一致性好的例子,至于为什么他是个坑,问题在别的地方。

  我们都知道,当一个变量b是一个指向int的指针的时候,*b的结果就是一个int。定义一个变量int a;也等于在说“定义a是一个int”。那我们来看上面那个变量声明:int *b;。这究竟是在说什么呢?其实真正的意思是“定义*b是一个int”。这种“定义和使用相一致”的方法其实正是我们要推崇的。C语言的函数定义参数用逗号分隔,调用的时候也用逗号分隔,这是好的。

摘自:如何设计一门语言(一)——什么是坑(a)


  在C语言的声明中,先给出一个基本类型,紧随其后的是一个标识符列表,这些标识符组成表达式,用于产生基本类型的变量。例如:

1
int  *a;

  这条语句表示表达式*a产生的结果类型是int。知道了*操作符执行的是间接访问操作以后,我们可以推断a肯定是一个指向int的指针。

  C在本质上是一种自由形式的语言,这很容易诱使你把星号写在靠近类型的一侧,如下所示:

1
int * a;

  这个声明与前面一个声明具有相同的意思,而且看上去更为清楚,a被声明为类型int*的指针。但是,这并不是一个好的技巧,原因如下:

1
int * b, c, d;

  人们很自然地认为这条语句把所有三个变量声明为指向整型的指针,但事实上并非如此。我们被它的形式愚弄了。星号实际上是表达式*b的一部分,只对这个标识符有用。b是一个指针,但其余两个变量只是普通的整型。要声明三个指针,正确的语句如下:

1
int  *b, *c, *d;

摘自:《C和指针》(3.2.3 声明指针)


*** walker ***

本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1673626如需转载请自行联系原作者

RQSLT
相关文章
|
JavaScript API
深入探索fs.WriteStream:Node.js文件写入流的全面解析
深入探索fs.WriteStream:Node.js文件写入流的全面解析
|
供应链 JavaScript 前端开发
ESModule 加载与运行机制
ESModule 作为 JS 的标准模块机制,在日常开发中被广泛使用,但在大部分情况下,我们可能只是将其作为 JS 代码文件的组织形式来对待。作为 JS 的模块规范,ESModule 底层其实有一套非常完善的机制,来确保 ESModule 在不同场景下的性能以及行为的确定性。本文的主要内容是关于 ESModule 加载运行的相关原理和机制的分享,在理解了相关的原理和机制之后,你将会对平常在使用 ESModule 过程中遇到的一些问题(比如:循环引用在什么情况下会报错、TreeShaking 的原理等)有更加深入的理解。
810 0
ESModule 加载与运行机制
|
存储 JSON 数据库
Elasticsearch通关教程(一): 基础入门
简介 Elasticsearch是一个高度可扩展的、开源的、基于 Lucene 的全文搜索和分析引擎。它允许您快速,近实时地存储,搜索和分析大量数据,并支持多租户。 Elasticsearch也使用Java开发并使用 Lucene 作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。
13514 1
|
4月前
|
存储 分布式计算 并行计算
云计算概述
云计算自2006年提出以来,已迅速发展为IT领域的核心技术。它融合了分布式计算、并行计算等技术,推动了信息基础设施的重构。随着数据量激增、能耗问题突出及资源利用率低,云计算应运而生,实现了按需使用、弹性扩展的信息服务模式,逐步接近“像用电一样使用计算资源”的理想目标。
502 0
|
自动驾驶 物联网 5G
什么是 5G 以及它如何工作?
【8月更文挑战第23天】
3126 0
|
11月前
|
人工智能 算法 自动驾驶
Jim Fan全华人团队HOVER问世,1.5M小模型让机器人获潜意识!
在机器人技术领域,人形机器人的全身控制一直极具挑战。传统方法为不同任务(如导航、移动操作等)单独训练控制策略,限制了策略的可转移性。Jim Fan团队提出HOVER框架,通过全身运动模仿作为共同抽象,整合多种控制模式,实现无缝过渡,显著提升控制效率和灵活性。HOVER不仅为人形机器人应用带来巨大潜力,也为机器人技术发展提供新思路。论文地址:https://arxiv.org/abs/2410.21229
240 23
|
11月前
|
前端开发 容器
CSS 居中技术完全指南:从基础到高级应用
本文详细介绍了 CSS 中常用的居中方法,涵盖水平居中、垂直居中及同时实现两者的方法。
889 12
|
Web App开发 移动开发 前端开发
H5微信外支付(移动端浏览器)
H5微信外支付(移动端浏览器)
541 1
 H5微信外支付(移动端浏览器)
|
前端开发 应用服务中间件 API
|
机器学习/深度学习 人工智能 自动驾驶
深度学习之自适应控制器设计
人工智能基于深度学习的自适应控制器设计在自动化系统、机器人控制、工业制造、无人驾驶等领域中有着广泛应用。自适应控制器借助深度学习模型的强大特征提取和学习能力,能够在未知或动态变化的环境中对系统进行实时调节,从而提升系统的响应速度、稳定性和控制精度。
474 1