第八十二天学习记录:C++基础:C++基础部分(非面向对象)和C语言的部分区别

结构体

在C++中,创建结构体变量时,关键字struct可以省略,但是在C语言中,创建结构体变量时需要显式地使用struct关键字。

例如,以下代码演示了在C++中创建结构体变量时可以省略struct关键字:

// C++ 中可以省略 struct 关键字
#include <iostream>

struct Point {
    int x;
    int y;
};

int main() {
    Point pt;  // 等价于 struct Point pt;
    pt.x = 10;
    pt.y = 20;
    std::cout << "pt.x = " << pt.x << ", pt.y = " << pt.y << std::endl;
    return 0;
}

而在C语言中创建结构体变量时,需要使用struct关键字声明:

// C 中需要使用 struct 关键字
#include <stdio.h>

struct Point {
    int x;
    int y;
};

int main() {
    struct Point pt;
    pt.x = 10;
    pt.y = 20;
    printf("pt.x = %d, pt.y = %d\n", pt.x, pt.y);
    return 0;
}

所以,在C语言中创建结构体变量时,需要显式地使用struct关键字。

C语言和C++在控制台输入输出的区别

C语言与C++在控制台输出方面的主要区别在于:

1.输入/输出头文件的名称不同:在C语言中,使用<stdio.h>头文件进行标准输入/输出操作,但在C++中,使用头文件进行输入/输出操作。

2.流操作符的使用:C++中引入了流操作符“<<”和“>>”用于输入/输出数据,而C语言则使用printf()和scanf()等函数进行输入/输出数据。

3.输出格式控制符的差异:C语言中的输出格式控制符(如%d,%f等)与C++中的有所不同,例如C++中可以使用endl控制输出换行,而C语言中使用“\n”控制换行。

4.C++中引入了所谓的“命名空间”(namespace)的概念,为不同的库和类提供独立的作用域,避免了名称冲突的问题,使得代码更加规范和易于维护。

C++在命名空间上的优势

在C++中,一个命名空间(namespace)可以看作是一个作用域的集合,可以用来区分不同库、不同项目或不同模块中的相同名称的函数、变量、类、结构体等。命名空间中的名称在其作用域内具有唯一性,避免不同模块或库之间的同名冲突。

具体来说,命名空间可以在全局范围内定义,而且命名空间可以包含其他命名空间,从而形成层次结构。一个命名空间需要使用namespace关键字进行定义,其基本语法如下:

namespace namespace_name {
   //特定的声明:
   int x;
   void func();
   class MyClass{};
}

当定义了一个命名空间之后,其中的声明可以通过“::”运算符来访问,例如namespace_name::xnamespace_name::func()namespace_name::MyClass等。如果定义了一个全局的变量或函数,可以显式地指定命名空间外面的全局作用域,例如::x::func()等。

通过使用命名空间,可以帮助我们更好地组织代码,防止不同模块之间的命名冲突,提高程序的可维护性和可读性。命名空间不仅常见于标准库,而且也可以在自己的项目中使用命名空间来组织代码,这是C++相比于C语言的一个非常重要的优势。

C++的string

在C语言中,没有string类型,字符串通常是通过字符数组来处理的。而在C++中,引入了string类型,为处理和操作字符串提供了更高效和更方便的方式。

C++中的string类是一个完整的字符串处理类型,内部实现为一个动态数组,可以自动地管理内存,方便地扩展和收缩字符串的长度。string类提供了许多内置的成员函数,例如插入、删除、查找、截取、替换、比较字符串等操作,也可以像普通数组那样直接通过索引访问单个字符。

相比于C语言中的字符数组和字符串处理函数(如strcpy()、strcat()、strlen()等),C++中的string类型提供了以下优势:

  1. 内置动态内存管理:string类自动处理内存分配和释放,避免了手动内存管理的繁琐和错误,也避免了内存泄漏和越界访问等问题。

  2. 方便的字符串操作:string类提供了丰富的字符串操作方法,例如substr()、erase()、insert()、replace()、find()、compare()等等,可以方便地实现各种字符串操作。

  3. 安全性:与C语言中的字符数组相比,使用string类型可以更好地保障安全性,防止缓冲区溢出等问题。

  4. 风格简洁:使用string类型可以让代码看起来更加简洁和易于阅读和维护。

综上所述,C++中的string类型比C语言中的字符数组和字符串处理函数更加方便、高效和安全,因此在C++中常被广泛使用。

在对C++面向过程的基础部分学习中,感觉上90%的内容和C语言相似,因此这部分的内容不再单独做学习笔记。后面将重点学习C++的核心部分。

猜你喜欢

转载自blog.csdn.net/weixin_45694614/article/details/131363563
今日推荐