本文提供了从入门到实践的C++资料,涵盖了基础语法、变量与常量、运算符、控制结构等内容。此外,文章还详细介绍了函数与作用域、数组与指针、结构体与类以及文件操作入门,帮助读者全面掌握C++编程技能。通过这些内容的学习,读者可以深入了解和实践C++编程。文中包含丰富的示例代码,便于理解和应用。
C++资料:从入门到实践的简单教程 C++基础语法介绍数据类型
C++ 中的数据类型分为基本数据类型和派生数据类型。基本数据类型包括整型(int, long, short, char)、浮点型(float, double)、布尔型(bool)等。
-
整型:
int
:用于表示整数,默认为 32 位short
:短整型,通常 16 位long
:长整型,通常 32 或 64 位long long
:更长的整型,通常 64 位
-
浮点型:
float
:单精度浮点数,通常 32 位double
:双精度浮点数,通常 64 位long double
:扩展精度浮点数
-
字符型:
char
:用于存储单个字符,默认 8 位
- 布尔型:
bool
:用于表示布尔值,true
和false
变量与常量
变量是程序中用于存储数据的标识符。变量在使用前需要声明其类型和名称。
示例代码:
int num; // 声明整型变量 num
float pi = 3.14f; // 声明浮点型变量 pi,并初始化为 3.14
char letter = 'A'; // 声明字符型变量 letter,并初始化为 'A'
bool flag = true; // 声明布尔型变量 flag,并初始化为 true
常量是固定不变的值。可以通过 const
关键字声明常量。
示例代码:
const int MAX_SIZE = 100; // 声明常量 MAX_SIZE
const double PI = 3.14159; // 声明常量 PI
const char* greeting = "Hello"; // 声明常量 greeting
运算符
C++ 支持多种运算符,包括算术运算符、关系运算符、逻辑运算符等。
算术运算符
- 加法
+
- 减法
-
- 乘法
*
- 除法
/
- 取模
%
示例代码:
int a = 10;
int b = 5;
int result;
result = a + b; // 结果为 15
result = a - b; // 结果为 5
result = a * b; // 结果为 50
result = a / b; // 结果为 2
result = a % b; // 结果为 0
关系运算符
- 等于
==
- 不等于
!=
- 小于
<
- 大于
>
- 小于等于
<=
- 大于等于
>=
示例代码:
int a = 10;
int b = 5;
bool result;
result = a == b; // 结果为 false
result = a != b; // 结果为 true
result = a < b; // 结果为 false
result = a > b; // 结果为 true
result = a <= b; // 结果为 false
result = a >= b; // 结果为 true
逻辑运算符
- 逻辑与
&&
- 逻辑或
||
- 逻辑非
!
示例代码:
bool a = true;
bool b = false;
bool result;
result = a && b; // 结果为 false
result = a || b; // 结果为 true
result = !a; // 结果为 false
控制结构
条件语句
条件语句用于根据不同的条件执行不同的代码段。基本的条件语句有 if
、else if
和 else
。
示例代码:
int score = 85;
if (score >= 90) {
std::cout << "优秀";
} else if (score >= 80) {
std::cout << "良好";
} else if (score >= 70) {
std::cout << "中等";
} else {
std::cout << "不及格";
}
循环语句
循环语句用于重复执行一段代码,直到满足某个条件为止。常见的循环语句有 for
循环和 while
循环。
for
循环
for
循环通常用于已知循环次数的情况。
示例代码:
for (int i = 0; i < 5; i++) {
std::cout << "第 " << i << " 次循环\n";
}
while
循环
while
循环在条件满足时会重复执行代码块。
示例代码:
int i = 0;
while (i < 5) {
std::cout << "第 " << i << " 次循环\n";
i++;
}
do-while
循环
do-while
循环至少执行一次循环体,然后在每次循环结束时检查条件。
示例代码:
int i = 0;
do {
std::cout << "第 " << i << " 次循环\n";
i++;
} while (i < 5);
函数与作用域
函数定义与调用
函数是执行特定任务的一段代码。定义函数时需要指定返回类型和函数名,以及参数列表。
示例代码:
#include <iostream>
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(3, 5);
std::cout << "结果: " << result << std::endl;
return 0;
}
作用域与生命周期
变量的作用域是指变量的可见范围。变量的生命周期是指变量的生存时间。
- 局部变量:在函数内部声明,生命周期为函数调用期间。
- 全局变量:在所有函数之外声明,生命周期为程序运行期间。
示例代码:
#include <iostream>
int globalVar = 10;
int main() {
int localVar = 20;
std::cout << "局部变量: " << localVar << std::endl;
std::cout << "全局变量: " << 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 num = 10;
int* ptr = # // 指针 ptr 存储 num 的地址
*ptr = 20; // 通过指针修改 num 的值
std::cout << "num 的值: " << num << std::endl; // 输出 20
return 0;
}
指针与数组
指针可以用来访问数组中的元素。数组名本身就是一个指向数组第一个元素的指针。
示例代码:
#include <iostream>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int* ptr = arr; // ptr 指向数组的第一个元素
for (int i = 0; i < 5; i++) {
std::cout << "arr[" << i << "] = " << *(ptr + i) << std::endl;
}
return 0;
}
指针的应用实例
指针的应用实例包括内存中的应用、指针与函数参数传递、指针数组、指针与多维数组等。
示例代码:
#include <iostream>
int main() {
int num = 10;
int* ptr = #
int arr[5] = {1, 2, 3, 4, 5};
int* arrPtr = arr;
// 使用指针修改数组元素
arrPtr[0] = 100;
for (int i = 0; i < 5; i++) {
std::cout << "arr[" << i << "] = " << arr[i] << std::endl;
}
return 0;
}
结构体与类
结构体的定义与使用
结构体是一种用户自定义的数据类型,可以包含多个不同类型的数据成员。
示例代码:
#include <iostream>
struct Point {
int x;
int y;
};
int main() {
Point p;
p.x = 10;
p.y = 20;
std::cout << "坐标 (x, y): (" << p.x << ", " << p.y << ")" << std::endl;
return 0;
}
类的基本概念
类是面向对象编程的基础,可以包含数据成员和成员函数。类的成员可以通过 public
、private
和 protected
访问控制来控制访问权限。
示例代码:
#include <iostream>
class Rectangle {
public:
int width;
int height;
Rectangle(int w, int h) : width(w), height(h) {}
int area() {
return width * height;
}
};
int main() {
Rectangle r(10, 20);
std::cout << "矩形的面积: " << r.area() << std::endl;
return 0;
}
类的高级特性
类的高级特性包括继承、多态、封装等面向对象编程概念。
示例代码:
#include <iostream>
#include <vector>
class Circle {
public:
double radius;
Circle(double r) : radius(r) {}
double area() {
return 3.14 * radius * radius;
}
};
class Cylinder : public Circle {
public:
double height;
Cylinder(double r, double h) : Circle(r), height(h) {}
double volume() {
return Circle::area() * height;
}
};
int main() {
Circle c(5);
std::cout << "圆的面积: " << c.area() << std::endl;
Cylinder cyl(5, 10);
std::cout << "圆柱的体积: " << cyl.volume() << std::endl;
return 0;
}
文件操作入门
文件的读写操作
文件操作通常包括打开、读取、写入和关闭文件。
示例代码:
#include <iostream>
#include <fstream>
int main() {
std::ofstream file("output.txt"); // 打开并创建文件
if (!file) {
std::cerr << "无法打开文件\n";
return 1;
}
file << "Hello, World!\n"; // 写入字符串
file.close(); // 关闭文件
std::ifstream inputFile("output.txt"); // 打开文件
if (!inputFile) {
std::cerr << "无法打开文件\n";
return 1;
}
std::string line;
while (std::getline(inputFile, line)) {
std::cout << line << std::endl; // 读取并输出每一行
}
inputFile.close(); // 关闭文件
return 0;
}
文件操作综合案例
综合文件处理案例,例如读取一个文本文件并将其内容转换为某种格式后再写入另一个文件。
示例代码:
#include <iostream>
#include <fstream>
#include <vector>
struct Student {
std::string name;
int age;
};
void writeStudentsToFile(const std::string& filename, const std::vector<Student>& students) {
std::ofstream file(filename);
if (!file) {
std::cerr << "无法打开文件 " << filename << std::endl;
return;
}
for (const auto& student : students) {
file << student.name << "," << student.age << std::endl;
}
file.close();
}
std::vector<Student> readStudentsFromFile(const std::string& filename) {
std::ifstream file(filename);
if (!file) {
std::cerr << "无法打开文件 " << filename << std::endl;
return {};
}
std::vector<Student> students;
std::string line;
while (std::getline(file, line)) {
Student student;
size_t pos = line.find(',');
if (pos != std::string::npos) {
student.name = line.substr(0, pos);
student.age = std::stoi(line.substr(pos + 1));
students.push_back(student);
}
}
file.close();
return students;
}
int main() {
std::vector<Student> students = {
{"Alice", 20},
{"Bob", 22},
{"Charlie", 21}
};
writeStudentsToFile("students.txt", students);
std::vector<Student> readStudents = readStudentsFromFile("students.txt");
for (const auto& student : readStudents) {
std::cout << "姓名: " << student.name << ", 年龄: " << student.age << std::endl;
}
return 0;
}
以上内容涵盖了C++的基本语法、控制结构、函数与作用域、数组与指针、结构体与类以及文件操作入门。通过这些内容的学习,读者可以掌握C++语言的基础,并为进一步深入学习打下坚实的基础。