不同语言的注释和数组

注释

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

不同形式的注释

  • !

    • 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等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

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

相关推荐
都叫我大帅哥20 分钟前
深入浅出 Resilience4j:Java 微服务的“免疫系统”实战指南
java·spring cloud
Cao_Shixin攻城狮2 小时前
Flutter运行Android项目时显示java版本不兼容(Unsupported class file major version 65)的处理
android·java·flutter
古月-一个C++方向的小白4 小时前
C++11之lambda表达式与包装器
开发语言·c++
沐知全栈开发5 小时前
Eclipse 生成 jar 包
开发语言
Dcs5 小时前
还在用 Arrays.hashCode?Java 自己也能写出更快的版本!
java
呼啦啦呼啦啦啦啦啦啦5 小时前
利用pdfjs实现的pdf预览简单demo(包含翻页功能)
android·javascript·pdf
杭州杭州杭州6 小时前
Python笔记
开发语言·笔记·python
tanyongxi666 小时前
C++ AVL树实现详解:平衡二叉搜索树的原理与代码实现
开发语言·c++
fouryears_234177 小时前
Spring,Spring Boot 和 Spring MVC 的关系以及区别
java·spring boot·spring·mvc
阿葱(聪)7 小时前
java 在k8s中的部署流程
java·开发语言·docker·kubernetes