C&C++

C和C++的部分差别

1.存储类

存储类定义程序中变量/函数的范围(可见性)和生命周期。
C++比较C多了mutable和thread_local类型

mutable 说明符仅适用于类的对象,
使用 thread_local 说明符声明的变量仅可在它在其上创建的线程上访问。 

注意:
从 C++ 17 开始,auto 关键字不再是 C++ 存储类说明符,且 register 关键字被弃用。
thread_local用于C++11

2.函数参数的调用

C++可以指针调用。
该方法把参数的地址赋值给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
C不可以使用指针调用。

3.指针

C++比较C能够支持空指针。NULL 指针是一个定义在标准库中的值为零的常量。

4.头文件
【C】
#include <stdio.h>      引用系统头文件。它在系统目录的标准列表中搜索名为 file 的文件。
#include "xxxxx"        引用用户头文件。它在包含当前文件的目录中搜索名为 file 的文件。


【C++】
 头文件      函数和描述
iostream    该文件定义了 cin、cout、cerr 和 clog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。
iomanip     该文件通过所谓的参数化的流操纵器(比如 setw 和 setprecision),来声明对执行标准化 I/O 有用的服务。
fstream     该文件为用户控制的文件处理声明服务。我们将在文件和流的相关章节讨论它的细节。
5.输入输出
            【C】        【C++】
标准输入    stdin          cin           键盘
标准输出    stdout         cout          屏幕
标准错误    stderr         cerr          您的屏幕
6.文件读写

C与C++的文件操作都属于面向对象,使用起来较为繁琐,需要记住很多函数。
对文件的操作都分为三个步骤:打开文件>操作文件>关闭文件

【C】
FILE *fopen( const char *filename, const char *mode );
//要打开的文件名,不指定路径,则在当前文件夹找
//打开的模式 读r 写w 或追加a
//返回值:打开失败返回NULL,打开成功则返回指向文件的标识符
int fputc( int c, FILE *fp );
//写入文件
int fclose( FILE *fp );
//关闭文件

【C++】
int main() {
    fstream file;
    file.open("filename",ios::mode); //以只写模式打开文件
    char buf[] = "内容";
    file.write(buf,sizeof(buf));       //写入文件末尾
    file.read(buf,mode);              //读文件
    file.close();                      //关闭文件
}
//mode
app      每次写入前寻位到流结尾
binary   以二进制模式打开
in       以读打开
out      以写打开
trunc    在打开时舍弃流的内容
ate      打开后立即寻位到流结尾
7.异常处理

C++有一个应对出现错误的机制,叫做异常处理。当程序运行发生错误时,可以抛出一个异常,异常处理程序会捕捉它并采取相应的措施。C语言并没有内置的异常机制。

8.编译器

C语言和C++语言的编译器可不同。尽管有些编译器支持两种语言,但某些特征可能仅仅由一个语言所支持。

9.名称空间

C++有一个关键字叫做namespace,用于区分相同名称的函数和变量。C语言中没有这个特性。

10.头文件

在C++中,头文件可以有任何扩展名,而在C语言中,它们必须是.h扩展名。

11.默认变量初始化

在C++中,类的成员变量默认情况下会被初始化。而在C语言中,变量的内容是未定义的,程序可能会因此出现意外错误。

总结

C++语言是C语言的扩展,它包含了所有C语言的特性,并增加了一些特有的特性。C++是一个更为现代化的语言,用于更复杂的编程环境,特别是当需要面向对象编程时,C++是首选语言。而C语言则侧重于系统编程,嵌入式编程等。

我只是刚开始学习C与C++,如果发现错误请在Github仓库中找到我。