C is a horrible language

我最开始学计算机的时候学的是C++,接着java
现在我上大二了需要学C,当我看到这个课件的时候我是崩溃的


这是什么鬼?
为什么同样的函数带定长或者上下限参数的版本不是一个名??
给变量或者函数命名的时候每个单词为什么不用_或者大写字母分开???

你需要 Rust:sunglasses:

1赞

毕竟不支持重载

毕竟不是完整单词?

:joy:

1赞

c 没有重载
这还有什么可吐槽的吗?

为什么同样的函数带定长或者上下限参数的版本不是一个名??

楼上说了,因为 C 没有重载,当然只能这样

给变量或者函数命名的时候每个单词为什么不用_或者大写字母分开???

因为 C 诞生的年代是每个 bit 都要精打细算来的,并且上古设备的输入输出并不是一件很轻松的事情

你去看 Linux 的代码,以及更早年代的各种程序的代码,基本都是这个风格,典型例子还有各种系统调用的名字

1赞

这太zz了,忍不住要吐槽233333

好像早期的 C 语言变量和函数的命名只支持 8 个字符,导致了各种奇怪的缩写。

因为早些年内存有限、磁盘有限,编译器的能力也有限,所以标识符不能太长。不仅如此,还有头文件啊、声明和定义出现的顺序啊什么的,都是当时编译器和硬件的限制造成的,一直沿用到了现在。

想摆脱就去用 Rust 呀。说实话,看到你的教材上写了 strcpy、strcat 这些函数而没有警告,这本书你可以扔掉了。

还有关于大写字母什么的,有些打字机是不区分大小写的

我觉得你可能是没有了解到 c 语言自身的任务和重要性
当孙子的哪有嘲笑爷爷老套跟不上潮流的?

编程语言一直都在进步
各种语言上的特性都是进步的结果,你想要的特性其他语言已经做得很好了
c ++ 包含几乎所有的特性,就怕你学不起

警告什么?
这只是老师上课用的幻灯片而已

strcpy、strcat,以及 gets 什么的,都是不推荐使用的危险函数,新代码不应当使用。请使用 strncpy / strlcpy、strncat / strlcat、fgets 代替。

1赞

好吧,受教了
我们老师根本没说这些函数不安全

嗯,我准备学一下