为了账号安全,请及时绑定邮箱和手机立即绑定

C++编程入门教程

标签:
C++
概述

C++是一种静态类型、广泛使用的程序设计语言,支持泛型编程和面向对象的编程特性。本文提供了C++编程入门教程,涵盖环境搭建、基本语法、流程控制、函数与作用域、数组与指针以及结构体与类等内容。文章通过示例代码详细介绍了C++的各种概念和用法,帮助读者逐步掌握C++编程。

C++编程入门教程
C++简介与环境搭建

什么是C++

C++是一种静态类型、编译式的、通用的、大小写敏感的、广泛使用的程序设计语言。C++程序设计语言支持泛型编程,以及介于过程式编程及基于对象的编程之间的多重范式。C++是一门高级语言,它包含了C语言的所有特性,并在此基础上增加了面向对象的编程特性。

C++最早是由Bjarne Stroustrup在20世纪80年代早期在贝尔实验室开发的。它可以在多种硬件和操作系统平台上运行,包括Windows、Linux、macOS等操作系统。

C++开发环境搭建

为了开始学习C++编程,你需要搭建一个开发环境。通常,C++开发环境包括一个文本编辑器和一个编译器。以下是在Windows、Linux和macOS上搭建C++开发环境的步骤。

Windows环境搭建

  1. 下载安装Visual Studio:
    Visual Studio是一个免费的集成开发环境(IDE),可以用于开发C++应用程序。

  2. 下载安装MinGW:
    如果你不想使用Visual Studio,也可以选择安装MinGW,这是一个包含C++编译器的开发环境。
    • 访问MinGW官网下载页面:http://mingw.org/
    • 按照下载页面上的说明完成安装。
    • 配置环境变量,确保编译器可以被命令行工具调用。

Linux环境搭建

  1. 使用包管理器安装g++(GCC的C++编译器):
    打开终端并执行以下命令:

    sudo apt-get update
    sudo apt-get install g++

    或者使用yumdnf等其他包管理器。

  2. 使用文本编辑器:
    你可以使用任何文本编辑器,如Vim、Emacs或Atom。

macOS环境搭建

  1. 使用Homebrew安装g++:
    Homebrew是一个macOS的软件包管理器,可以用来安装各种开发工具。

    • 打开终端,并按照Homebrew官网的安装指南安装Homebrew。
    • 安装g++:
      brew install gcc
  2. 使用文本编辑器:
    你可以使用任何文本编辑器,如Vim、TextMate或Sublime Text。

编译与运行第一个C++程序

编译和运行一个C++程序通常包括以下几个步骤:

  1. 编写代码:
    使用文本编辑器创建一个新的文件,扩展名为.cpp.cc,然后编写程序代码。

    #include <iostream>
    
    int main() {
       std::cout << "Hello, World!" << std::endl;
       return 0;
    }
  2. 保存文件:
    将文件保存为hello.cpp

  3. 编译代码:
    在命令行中,使用g++编译器将源代码编译成可执行文件。

    • 在Windows中,如果安装了MinGW,可以使用以下命令:
      g++ hello.cpp -o hello.exe
    • 在Linux或macOS中,使用以下命令:
      g++ hello.cpp -o hello
  4. 运行程序:
    编译成功后,可以运行生成的可执行文件。
    • 在Windows中:
      ./hello.exe
    • 在Linux或macOS中:
      ./hello
C++基本语法

基本数据类型

C++提供了多种基本数据类型,包括整型、浮点型、字符型、布尔型和无符号整型。

  • 整型:int, short, long, long long, unsigned int, unsigned short, unsigned long, unsigned long long
  • 浮点型:float, double
  • 字符型:char
  • 布尔型:bool
  • 宽字符型:wchar_t

示例代码:

#include <iostream>

int main() {
    int a = 10;
    short b = 20;
    long c = 1000000;
    long long d = 1000000000000LL;
    unsigned int e = 10;
    unsigned short f = 20;
    unsigned long g = 1000000;
    unsigned long long h = 1000000000000ULL;
    float fval = 3.14f;
    double dval = 3.14159;
    char ch = 'A';
    bool flag = true;
    wchar_t wch = L'A';

    std::cout << "int: " << a << std::endl;
    std::cout << "short: " << b << std::endl;
    std::cout << "long: " << c << std::endl;
    std::cout << "long long: " << d << std::endl;
    std::cout << "unsigned int: " << e << std::endl;
    std::cout << "unsigned short: " << f << std::endl;
    std::cout << "unsigned long: " << g << std::endl;
    std::cout << "unsigned long long: " << h << std::endl;
    std::cout << "float: " << fval << std::endl;
    std::cout << "double: " << dval << std::endl;
    std::cout << "char: " << ch << std::endl;
    std::cout << "bool: " << flag << std::endl;
    std::cout << "wchar_t: " << wch << std::endl;

    return 0;
}

变量与常量

变量是用来存储数据的容器。在C++中,变量需要先声明类型,再赋值。

示例代码:

#include <iostream>

int main() {
    int x = 10;
    float y = 3.14;
    bool z = false;

    std::cout << "x: " << x << std::endl;
    std::cout << "y: " << y << std::endl;
    std::cout << "z: " << z << std::endl;

    return 0;
}

常量是用来存储固定值的容器。常量一旦赋值,就不能被修改。

示例代码:

#include <iostream>

int main() {
    const int PI = 3.14;
    std::cout << "PI: " << PI << std::endl;

    return 0;
}

运算符与表达式

C++提供了多种运算符,包括算术运算符、关系运算符、逻辑运算符以及位运算符等。

算术运算符

  • 加法:+
  • 减法:-
  • 乘法:*
  • 除法:/
  • 取模:%

示例代码:

#include <iostream>

int main() {
    int a = 10;
    int b = 5;
    std::cout << "a + b: " << (a + b) << std::endl;
    std::cout << "a - b: " << (a - b) << std::endl;
    std::cout << "a * b: " << (a * b) << std::endl;
    std::cout << "a / b: " << (a / b) << std::endl;
    std::cout << "a % b: " << (a % b) << std::endl;

    return 0;
}

关系运算符

  • 等于:==
  • 不等于:!=
  • 小于:<
  • 大于:>
  • 小于等于:<=
  • 大于等于:>=

示例代码:

#include <iostream>

int main() {
    int a = 10;
    int b = 5;
    std::cout << "a == b: " << (a == b) << std::endl;
    std::cout << "a != b: " << (a != b) << std::endl;
    std::cout << "a > b: " << (a > b) << std::endl;
    std::cout << "a < b: " << (a < b) << std::endl;
    std::cout << "a >= b: " << (a >= b) << std::endl;
    std::cout << "a <= b: " << (a <= b) << std::endl;

    return 0;
}

逻辑运算符

  • 逻辑与:&&
  • 逻辑或:||
  • 逻辑非:!

示例代码:

#include <iostream>

int main() {
    int a = 10;
    int b = 5;
    std::cout << "(a > 5) && (b < 10): " << ((a > 5) && (b < 10)) << std::endl;
    std::cout << "(a > 5) || (b > 10): " << ((a > 5) || (b > 10)) << std::endl;
    std::cout << "!(a > 5): " << (!(a > 5)) << std::endl;

    return 0;
}

位运算符

  • 按位与:&
  • 按位或:|
  • 按位异或:^
  • 按位取反:~
  • 左移:<<
  • 右移:>>

示例代码:

#include <iostream>

int main() {
    int a = 6;  // 二进制:0110
    int b = 3;  // 二进制:0011
    std::cout << "a & b: " << (a & b) << std::endl;  // 0010
    std::cout << "a | b: " << (a | b) << std::endl;  // 0111
    std::cout << "a ^ b: " << (a ^ b) << std::endl;  // 0101
    std::cout << "~a: " << (~a) << std::endl;        // -7
    std::cout << "a << 1: " << (a << 1) << std::endl;  // 12
    std::cout << "a >> 1: " << (a >> 1) << std::endl;  // 3

    return 0;
}
流程控制

条件语句

C++提供了多种条件语句,包括ifelseswitch语句。

if语句

#include <iostream>

int main() {
    int a = 10;
    if (a > 5) {
        std::cout << "a 大于 5" << std::endl;
    }

    return 0;
}

if-else语句

#include <iostream>

int main() {
    int a = 10;
    if (a > 5) {
        std::cout << "a 大于 5" << std::endl;
    } else {
        std::cout << "a 小于 5" << std::endl;
    }

    return 0;
}

if-else if-else语句

#include <iostream>

int main() {
    int a = 10;
    if (a > 20) {
        std::cout << "a 大于 20" << std::endl;
    } else if (a > 10) {
        std::cout << "a 大于 10" << std::endl;
    } else {
        std::cout << "a 小于等于 10" << std::endl;
    }

    return 0;
}

switch语句

#include <iostream>

int main() {
    int a = 10;
    switch (a) {
        case 10:
            std::cout << "a 等于 10" << std::endl;
            break;
        case 20:
            std::cout << "a 等于 20" << std::endl;
            break;
        default:
            std::cout << "a 不等于 10 或 20" << std::endl;
    }

    return 0;
}

循环语句

C++提供了几种循环语句,包括forwhiledo-while语句。

for循环

#include <iostream>

int main() {
    for (int i = 1; i <= 5; i++) {
        std::cout << "i: " << i << std::endl;
    }

    return 0;
}

while循环

#include <iostream>

int main() {
    int i = 1;
    while (i <= 5) {
        std::cout << "i: " << i << std::endl;
        i++;
    }

    return 0;
}

do-while循环

#include <iostream>

int main() {
    int i = 1;
    do {
        std::cout << "i: " << i << std::endl;
        i++;
    } while (i <= 5);

    return 0;
}

跳转语句

跳转语句包括breakcontinuegoto语句。break用于跳出循环,continue用于跳过循环的其余部分,goto用于无条件跳转到标签处。

break语句

#include <iostream>

int main() {
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            break;
        }
        std::cout << "i: " << i << std::endl;
    }

    return 0;
}

continue语句

#include <iostream>

int main() {
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            continue;
        }
        std::cout << "i: " << i << std::endl;
    }

    return 0;
}

goto语句

#include <iostream>

int main() {
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            goto label;
        }
        std::cout << "i: " << i << std::endl;
    }
    label:
    std::cout << "跳转到标签处" << std::endl;

    return 0;
}
函数与作用域

函数定义与调用

C++函数可以定义为返回一个值,或不返回任何值。函数的定义包括函数名、参数列表、返回类型和函数体。

不带参数的函数

#include <iostream>

void printHello() {
    std::cout << "Hello, World!" << std::endl;
}

int main() {
    printHello();

    return 0;
}

带参数的函数

#include <iostream>

void printNumber(int num) {
    std::cout << "Number: " << num << std::endl;
}

int main() {
    printNumber(10);

    return 0;
}

返回值的函数

#include <iostream>

int add(int a, int b) {
    return a + b;
}

int main() {
    int result = add(5, 3);
    std::cout << "Result: " << result << std::endl;

    return 0;
}

函数参数与返回值

函数可以有不同类型和数量的参数。参数可以是值传递或引用传递。

值传递

#include <iostream>

void increment(int num) {
    num++;
    std::cout << "Incremented num: " << num << std::endl;
}

int main() {
    int a = 10;
    increment(a);

    std::cout << "Original a: " << a << std::endl;

    return 0;
}

引用传递

#include <iostream>

void increment(int &num) {
    num++;
    std::cout << "Incremented num: " << num << std::endl;
}

int main() {
    int a = 10;
    increment(a);

    std::cout << "Original a: " << a << std::endl;

    return 0;
}

作用域与生命周期

在C++中,变量的作用域和生命周期是两个重要概念。

全局作用域

#include <iostream>

int globalVar = 10;

void func() {
    std::cout << "Global variable: " << globalVar << std::endl;
}

int main() {
    func();
    std::cout << "Global variable: " << globalVar << std::endl;

    return 0;
}

局部作用域

#include <iostream>

void func() {
    int localVar = 20;
    std::cout << "Local variable: " << localVar << std::endl;
}

int main() {
    func();

    return 0;
}

生命周期

变量的生命周期是指它在程序中的存在时间。局部变量在其作用域内存在,全局变量在整个程序运行期间存在。

#include <iostream>

void func() {
    int localVar = 20;
    std::cout << "Local variable: " << localVar << std::endl;
}

int main() {
    func();
    // localVar 在这里已经超出作用域,不能访问

    int globalVar = 10;
    std::cout << "Global variable: " << globalVar << std::endl;

    return 0;
}
数组与指针

数组的定义与使用

数组是一种数据结构,用于存储一组相同类型的数据元素。数组的大小在声明时确定,不能更改。

一维数组

#include <iostream>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};

    for (int i = 0; i < 5; i++) {
        std::cout << "arr[" << i << "]: " << arr[i] << std::endl;
    }

    return 0;
}

二维数组

#include <iostream>

int main() {
    int arr[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };

    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            std::cout << "arr[" << i << "][" << j << "]: " << arr[i][j] << std::endl;
        }
    }

    return 0;
}

指针的基本概念

指针是一种变量,存储的是另一个变量的内存地址。指针可以用来访问和修改存储在内存中的变量。

定义指针

#include <iostream>

int main() {
    int num = 10;
    int *p = &num;

    std::cout << "num: " << num << std::endl;
    std::cout << "p: " << p << std::endl;
    std::cout << "*p: " << *p << std::endl;

    return 0;
}

指针运算

#include <iostream>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    int *p = arr;

    for (int i = 0; i < 5; i++) {
        std::cout << "arr[" << i << "]: " << p[i] << std::endl;
    }

    return 0;
}

数组与指针的关系

数组和指针在C++中有密切的关系。实际上,数组名称本身就是一个指向数组第一个元素的指针。

#include <iostream>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};

    std::cout << "arr: " << arr << std::endl;
    std::cout << "arr[0]: " << arr[0] << std::endl;
    std::cout << "&arr[0]: " << &arr[0] << std::endl;

    return 0;
}
结构体与类

结构体的定义与使用

结构体是一种用户自定义的数据类型,可以包含多个不同类型的成员变量。结构体主要用于数据的封装。

定义结构体

#include <iostream>

struct Person {
    std::string name;
    int age;
};

int main() {
    Person p1;
    p1.name = "张三";
    p1.age = 30;

    std::cout << "Name: " << p1.name << std::endl;
    std::cout << "Age: " << p1.age << std::endl;

    return 0;
}

初始化结构体

#include <iostream>

struct Person {
    std::string name;
    int age;
};

int main() {
    Person p1 = {"李四", 25};

    std::cout << "Name: " << p1.name << std::endl;
    std::cout << "Age: " << p1.age << std::endl;

    return 0;
}

类的定义与成员函数

类是面向对象编程的核心概念,它用于封装数据和操作数据的方法。类可以包含成员变量和成员函数。

定义类

#include <iostream>

class Person {
public:
    std::string name;
    int age;

    void setName(std::string name) {
        this->name = name;
    }

    void setAge(int age) {
        this->age = age;
    }

    void printInfo() {
        std::cout << "Name: " << name << std::endl;
        std::cout << "Age: " << age << std::endl;
    }
};

int main() {
    Person p1;
    p1.name = "王五";
    p1.age = 35;

    p1.printInfo();

    return 0;
}

初始化类

#include <iostream>

class Person {
public:
    std::string name;
    int age;

    void setName(std::string name) {
        this->name = name;
    }

    void setAge(int age) {
        this->age = age;
    }

    void printInfo() {
        std::cout << "Name: " << name << std::endl;
        std::cout << "Age: " << age << std::endl;
    }
};

int main() {
    Person p1 = {"赵六", 40};

    p1.printInfo();

    return 0;
}

类的继承与多态基础

继承是面向对象编程中的重要特性,它允许子类继承父类的属性和方法。多态则是允许子类覆盖父类的方法。

基类与派生类

#include <iostream>

class Animal {
public:
    void makeSound() {
        std::cout << "Animal makes sound" << std::endl;
    }
};

class Dog : public Animal {
public:
    void makeSound() {
        std::cout << "Dog barks" << std::endl;
    }
};

int main() {
    Animal a;
    a.makeSound();

    Dog d;
    d.makeSound();

    return 0;
}

多态

#include <iostream>

class Animal {
public:
    virtual void makeSound() {
        std::cout << "Animal makes sound" << std::endl;
    }
};

class Dog : public Animal {
public:
    void makeSound() {
        std::cout << "Dog barks" << std::endl;
    }
};

int main() {
    Animal *a = new Dog();

    a->makeSound();

    delete a;

    return 0;
}

以上是C++编程入门教程的主要内容,涵盖了C++的基本概念和语法。通过实践示例,你可以更好地理解和掌握这些概念。如果你需要更深入的学习,可以参考在线教程或参加慕课网的相关课程。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消