本文提供了C++零基础资料,涵盖了从语言简介到环境搭建、基础语法学习、流程控制等内容,帮助新手快速入门。文章详细介绍了C++的基本语法、变量、数据类型、运算符、条件语句等知识点,并通过示例代码进行解释。读者可以跟随指南搭建开发环境并编写简单的C++程序。
C++语言简介与环境搭建C++是一种静态类型、编译式的编程语言,它是C语言的超集,增加了面向对象编程的特性。C++是一种通用的编程语言,支持过程化编程、面向对象编程以及泛型编程。C++的特点包括高效、灵活、功能丰富、强大的内存直接访问能力,因此被广泛应用于系统软件开发、游戏开发、图形处理、嵌入式系统等多个领域。
C++由Bjarne Stroustrup在1983年开发,最初是作为C语言的扩展。随着时间的推移,C++逐渐发展出了许多新特性,如模板、异常处理、标准模板库(STL)等,使得它在现代软件开发中更加实用和灵活。
在开始编写C++程序之前,你需要搭建一个C++开发环境。以下是搭建环境的步骤:
安装C++编译器:
apt
或yum
安装GCC。选择一个代码编辑器:
.cpp
。编写一个简单的“Hello, World!”程序,以验证你的开发环境是否搭建成功。
#include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; }
示例解释:
#include <iostream>
:引入输入输出流库,用于处理输入输出。int main()
:程序的入口点,每个C++程序都必须有一个main
函数。std::cout << "Hello, World!" << std::endl;
:输出字符串到控制台。return 0;
:返回0表示程序成功结束。在终端或命令行中,使用g++
编译器对源代码文件进行编译:
g++ -o hello hello.cpp
这将生成一个名为hello
的可执行文件。使用以下命令运行程序:
./hello
你应该能看到输出如下内容:
Hello, World!基础语法学习
在C++中,变量用于存储数据。变量需要指定类型,不同类型用于存储不同类型的值。C++支持多种数据类型,包括基本类型和复合类型。
整型:
int
:整数,通常是4字节。short
:短整型,通常是2字节。long
:长整型,通常是4或8字节。long long
:更长的整型,通常8字节。浮点型:
float
:单精度浮点数,通常是4字节。double
:双精度浮点数,通常是8字节。long double
:扩展精度浮点数,通常是8或16字节。字符型:
char
:字符,通常是1字节。wchar_t
:宽字符,通常是2或4字节。bool
:布尔值,可以是true
或false
。变量声明的基本语法是:类型 变量名;
。初始化变量可以在声明时进行:
int age = 25; float price = 9.99; char grade = 'A'; bool result = true;
#include <iostream> int main() { int num = 10; float pi = 3.14159; char initial = 'M'; bool isPassed = false; std::cout << "Number: " << num << std::endl; std::cout << "Pi: " << pi << std::endl; std::cout << "Initial: " << initial << std::endl; std::cout << "Is Passed: " << isPassed << std::endl; return 0; }
示例解释:
int num = 10;
:声明并初始化一个整型变量num
。float pi = 3.14159;
:声明并初始化一个浮点型变量pi
。char initial = 'M';
:声明并初始化一个字符型变量initial
。bool isPassed = false;
:声明并初始化一个布尔型变量isPassed
。常量是指在程序执行过程中,其值不能被改变的量。常量分为编译时常量和运行时常量。编译时常量在编译时确定,而运行时常量在运行时确定。
使用const
关键字声明编译时常量:
const int MAX_VALUE = 100;
符号常量通过宏定义#define
来定义:
#define PI 3.14159 #define MAX_SIZE 1000
#include <iostream> const int MAX_VALUE = 100; #define PI 3.14159 int main() { int value = 50; if (value < MAX_VALUE) { std::cout << "Value is less than MAX_VALUE" << std::endl; } float circumference = 2 * PI * 10; std::cout << "Circumference: " << circumference << std::endl; return 0; }
示例解释:
const int MAX_VALUE = 100;
:声明一个编译时常量MAX_VALUE
。#define PI 3.14159
:定义一个符号常量PI
。if (value < MAX_VALUE)
:判断value
是否小于MAX_VALUE
。float circumference = 2 * PI * 10;
:计算圆的周长。C++支持多种运算符,包括算术运算符、关系运算符、逻辑运算符等。运算符用于连接操作数,并根据特定规则进行计算。
+
:加法-
:减法*
:乘法/
:除法%
:取模==
:等于!=
:不等于<
:小于<=
:小于等于>
:大于>=
:大于等于&&
:逻辑与||
:逻辑或!
:逻辑非#include <iostream> int main() { int a = 10; int b = 5; int sum = a + b; int diff = a - b; int product = a * b; int quotient = a / b; int remainder = a % b; std::cout << "Sum: " << sum << std::endl; std::cout << "Difference: " << diff << std::endl; std::cout << "Product: " << product << std::endl; std::cout << "Quotient: " << quotient << std::endl; std::cout << "Remainder: " << remainder << std::endl; bool isGreater = a > b; bool isEqual = a == b; bool isNotEqual = a != b; std::cout << "Is Greater: " << isGreater << std::endl; std::cout << "Is Equal: " << isEqual << std::endl; std::cout << "Is Not Equal: " << isNotEqual << std::endl; bool isTrue = a > 0 && b > 0; bool isOr = a > 0 || b > 0; bool isNot = !(a > 0); std::cout << "Is True: " << isTrue << std::endl; std::cout << "Is Or: " << isOr << std::endl; std::cout << "Is Not: " << isNot << std::endl; return 0; }
示例解释:
int sum = a + b;
:计算a
和b
的和。int diff = a - b;
:计算a
和b
的差。int product = a * b;
:计算a
和b
的积。int quotient = a / b;
:计算a
和b
的商。int remainder = a % b;
:计算a
除以b
的余数。bool isGreater = a > b;
:判断a
是否大于b
。bool isEqual = a == b;
:判断a
是否等于b
。bool isNotEqual = a != b;
:判断a
是否不等于b
。bool isTrue = a > 0 && b > 0;
:判断a
和b
是否都大于0。bool isOr = a > 0 || b > 0;
:判断a
或b
是否大于0。bool isNot = !(a > 0);
:判断a
是否不大于0。条件语句用于根据条件选择执行不同的语句。C++支持if
、else
和switch
三种条件语句。
if (条件) { // 条件为真时执行的语句 }
if (条件) { // 条件为真时执行的语句 } else { // 条件为假时执行的语句 }
if (条件1) { // 条件1为真时执行的语句 } else if (条件2) { // 条件2为真时执行的语句 } else { // 其他情况下的语句 }
switch (表达式) { case 常量1: // 表达式等于常量1时执行的语句 break; case 常量2: // 表达式等于常量2时执行的语句 break; default: // 表达式不等于任何常量时执行的语句 }
#include <iostream> int main() { int number = 5; if (number > 0) { std::cout << "Number is positive" << std::endl; } else if (number < 0) { std::cout << "Number is negative" << std::endl; } else { std::cout << "Number is zero" << std::endl; } switch (number) { case 1: std::cout << "Number is 1" << std::endl; break; case 2: std::cout << "Number is 2" << std::endl; break; case 3: std::cout << "Number is 3" << std::endl; break; default: std::cout << "Number is neither 1, 2, nor 3" << std::endl; } return 0; }
示例解释:
if (number > 0)
:判断number
是否大于0。else if (number < 0)
:判断number
是否小于0。else
:判断number
是否等于0。switch (number)
:根据number
的值执行不同的分支。循环语句用于重复执行一段代码,直到满足某个条件为止。C++支持for
、while
和do-while
三种循环语句。
for (初始化; 条件; 更新) { // 循环体 }
while (条件) { // 循环体 }
do { // 循环体 } while (条件);
#include <iostream> int main() { // for 循环 for (int i = 0; i < 5; i++) { std::cout << "Iteration " << i << std::endl; } // while 循环 int j = 0; while (j < 5) { std::cout << "Iteration " << j << std::endl; j++; } // do-while 循环 int k = 0; do { std::cout << "Iteration " << k << std::endl; k++; } while (k < 5); return 0; }
示例解释:
for (int i = 0; i < 5; i++)
:初始化i
为0,每次循环后i
加1,直到i
等于5。while (j < 5)
:只要j
小于5,就继续循环。do { } while (k < 5)
:先执行循环体内的代码,然后再检查条件。函数是具有名字的代码块,用于执行特定的任务。函数可以返回一个值,也可以不返回值。C++支持形式参数和实际参数的概念,并且可以进行函数重载。
void printHello() { std::cout << "Hello!" << std::endl; }
调用函数:
printHello();
void printNumber(int n) { std::cout << "The number is " << n << std::endl; }
调用函数:
printNumber(42);
void printString(const std::string& str) { std::cout << "The string is " << str << std::endl; } void printNumber(int n) { std::cout << "The number is " << n << std::endl; } printString("world"); printNumber(42);
示例解释:
void printHello()
:定义一个函数printHello
,不接受参数,不返回值。void printNumber(int n)
:定义一个函数printNumber
,接受一个整型参数n
,不返回值。printString("world")
:调用printString
函数,传递字符串参数。printNumber(42)
:调用printNumber
函数,传递整型参数。数组是一种基本的数据结构,用于存储多个相同类型的元素。字符串是特殊的字符数组,通常使用std::string
来处理。
#include <iostream> #include <string> int main() { // 数组定义与遍历 int arr[5] = {1, 2, 3, 4, 5}; for (int i = 0; i < 5; i++) { std::cout << "Element " << i << ": " << arr[i] << std::endl; } // 字符串操作 std::string str = "Hello, World!"; std::cout << "Original String: " << str << std::endl; str += "!"; std::cout << "Modified String: " << str << std::endl; return 0; }
示例解释:
int arr[5] = {1, 2, 3, 4, 5};
:定义一个包含5个元素的整型数组arr
。for (int i = 0; i < 5; i++)
:遍历数组,输出每个元素。std::string str = "Hello, World!";
:定义一个字符串str
。str += "!";
:在字符串末尾添加一个字符。结构体是一种简单的用户定义的数据类型,用于组合不同的数据类型。类是面向对象编程的基础,用于封装数据和行为。
#include <iostream> // 结构体定义与使用 struct Point { int x; int y; }; Point p; p.x = 10; p.y = 20; std::cout << "Point: (" << p.x << ", " << p.y << ")" << std::endl; // 类定义与对象 class Circle { public: int radius; void setRadius(int r) { radius = r; } int getRadius() { return radius; } }; Circle c; c.setRadius(5); std::cout << "Radius: " << c.getRadius() << std::endl;
示例解释:
struct Point { int x; int y; };
:定义一个结构体Point
,包含两个整型成员x
和y
。Point p;
:声明一个Point
类型的变量p
。p.x = 10;
:设置p
的x
成员。p.y = 20;
:设置p
的y
成员。class Circle { public: int radius; void setRadius(int r) { radius = r; } int getRadius() { return radius; } };
:定义一个类Circle
,包含一个整型成员radius
,一个设置半径的方法setRadius
,以及一个获取半径的方法getRadius
。Circle c;
:声明一个Circle
类型的变量c
。c.setRadius(5);
:设置c
的半径为5。std::cout << "Radius: " << c.getRadius() << std::endl;
:输出c
的半径。