为什么c/cpp语言的函数好像没有按照驼峰命名法呢？
大一计算机专业学生，大一编程入门门学的Java，现在在自学c和cpp。

学习的过程中，我发现c和cpp的一些函数、变量都是小写，一开始看不懂，不知道什么意思。比如cpp里面, cin cout,
我一直以为c发音"k"，以为这两个是完整的单词，直到同学告诉我是c in 和 c
out。最近看了侯捷讲的cpp高级开发，里面讲stl里面的复数类时，说道有个方法叫做__doapl()表示do assignment
plus。又比如c里面的“stdio.h”一开始以为是studio工作室的意思，后来才知道是std input and
output。还有c里面的strcpy，strcmp，为什么不写成StringCopy和StringCompare呢？我感觉很难记到底缩写了什么字母。这就导致学malloc的时候，我不知道这是不是真的是一个单词叫做”vt.分配内存“,
会使劲想会不会是mallo c，因为上面有c out c in，然后查mallo的意思发现没有这个单词。

请问这个全部把小写连在一起的原因是什么呢？是有什么历史上的考量吗？

Java里面，类名都是大写驼峰，可是cpp里面有时候是小写（比如std::string）有时候又是大写（比如加入了别的框架（比如dotnet）之后的String），不太明白，是不是意味着大写的类不太正规呢？
代码风格其实是一个比较晚近才出现的论题。早期电脑容量有限，编译器也不够强大，人们对命名的要求基本上以缩写为主，包括但不限于汇编指令的mnemonic（比如，setz，jnz），各种语言的built-in和标准库（比如，cdr，atoi），这个时候讨论代码风格，甚至是一个略微奢侈的话题。而变量命名风格只是代码风格的一个子集。到了电脑容量足够大，编译器也足够强大，人们开始讨论代码风格这个论题的时候，变量命名也出现了不同的流派，比如snake_name，camelCase，CamelCase和匈牙利命名法之类的。百花齐放也就意味着大家还没有达成共识（例如著名的神圣的大括号战争），所以就会有相当多的不同风格的代码遗留下来。而经过一段时间的发展，不同的组织就有了自己的指导风格。后发语言在这一点上是有优势的，比如Java和C#虽然都支持任意风格的命名，但由于有着一定的『官方建议』，所以本语言代码在大多数情况下风格都是统一的。再后发一些的语言，比如go，甚至在语言的内置格式化工具中不提供任何参数，进一步规避了代码风格的争论。Rust在这方面也有一定的保证。但对于相对早一点，在代码风格这个论题刀耕火种百花齐放的时代就占据主流的C/C++则不可避免的留下了诸多风格迥异的历史代码。以上只是一个笼统的介绍，实际上和Java差不多同时期诞生的Python和JavaScript的代码风格也没有非常的统一，snake_name和camelCase都有自己的拥趸。究其原因可能是他们本身并不像Java和C#一样一开始就作为一种商业产品推出的，所以语言本身并没有提供过多的官方建议。