不同语言的注释和数组

注释

不同编程语言的注释不尽相同,有的用//, 有的用!, 有的用#, 各不相同。

不同形式的注释

  • !

    • Fortran
  • --

    • Ada
  • //

    • 最早BCPL,到C++/Java/C99, 基本所有C系编程语言都支持,JS也支持。
    • Shell和Python.
  • /* */

    • C系编程语言支持,JS也支持。
  • (* *)

    • Pascal.
  • Windows批处理注释采用REM或::或% <注释> %.

注释嵌套

  • C/C++不支持多行注释嵌套,比如/* */, 嵌套并不会带来什么好处,反而带来更多复杂性。当编译器看到/*时认为是注释开始,又遇到了一个/*, 编译器是不是应该忽略它,应该不管忽略不忽略,从语法上都是注释...所以,编译器不如简单点,遇到/*后,就找下一个*/, 不管中间遇到什么都是注释的一部分。随着产生的问题是,/* /* */被认为的注释结束,后面再跟着 */就非法了。

  • Swift支持/* */嵌套,例如 /* comment /* nest comment */ */.

如何测试编译器是否支持嵌套注释?

  • C缺陷和陷阱 中提出了一个巧妙的方法:
    int i = /*/*/0*/**/1;
    如果i是0代表不支持,为1代表支持。

数组

数组的理解其实很简单,就是数据的连续堆积。最早FORTRAN和ALGOL 68就有数组的概念。

最简单的数据结构

  • 现实世界中最简单方便有效的数据结构。小数据量的绝佳选择, 兼顾效率和易用。

  • 操作系统、驱动和库常有使用。

数组存放栈或堆

  • C/C++允许定义数组于堆栈区,这种方式更加灵活,尤其对于内存性能要求较高的场所。

  • Java中数组不可能位于堆栈区,只能是堆对象,某些时候不太灵活。

  • 大部分编程语言将数组作为引用类型,包括C/C++/Java/C#等,Go把数组当做值类型。

数组形态

  • 大部分使用中括号表示数组,中括号加下标表示数组长度或Index.

可变数组VLA

  • 尽管C99支持VLA, C11中废弃它,因为它实在不太好用。动态数组比它优秀多了。

  • C# stackalloc支持VLA.

数组索引

字符串本质是一个数组,一般二者的索引起始点是相同的。

  • 从0开始: 和现实世界对应,"当前"的元素距离是0. 大部分编程语言采用
    • 例如C/ObjC/C++/Java/C#/Python/JavaScript/Go/Rust/Swift/仓颉
  • 从1开始
    • 例如Pascal/Fortran/VB.
  • C语言数组名和索引位置互换是同一个意思,a[1]等同于1[a].

数组元素类型

  • 为了方便管理,数组元素一般都是相同类型。

  • Javascript数组元素可以是不同对象。

数组赋值

  • C语言把数组名当成常量,数组名不可以被赋值。

  • Java/C#数组名只是一个引用,本质是指针,可以被赋值。


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

相关推荐
FQNmxDG4S2 小时前
Java多线程编程:Thread与Runnable的并发控制
java·开发语言
前端老石人2 小时前
HTML 字符引用完全指南
开发语言·前端·html
matlab_xiaowang3 小时前
Redux 入门:JavaScript 可预测状态管理库
开发语言·javascript·其他·ecmascript
虹科网络安全3 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
axng pmje3 小时前
Java语法进阶
java·开发语言·jvm
汉克老师3 小时前
GESP2025年3月认证C++五级( 第三部分编程题(1、平均分配))
c++·算法·贪心算法·排序·gesp5级·gesp五级
rKWP8gKv74 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫4 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287924 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本4 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka