注释
不同编程语言的注释不尽相同,有的用//, 有的用!, 有的用#, 各不相同。
不同形式的注释
-
!
- 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等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。
欢迎关注。助您在编程路上越走越好!