本文主要是介绍c++基础版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
c++基础版
- Windows环境搭建
- 第一个C++程序
- c++程序运行原理
- 注释
- 常亮
- 字面常亮
- 符号常亮
- 变量
- 数据类型
- 整型
- 实型
- 常量类型确定
- char类型
- 字符串
- 布尔类型
- 控制台输入
- 随机数产生
- 枚举定义
- 数组
- 数组便利
- 指针基础
- 野指针
- 空指针
- 指针运算
- 动态内存分配
- 结构体
- 结构体默认值
- 结构体数组
- 结构体指针
- 结构体指针数组
- 函数
- 无返回值函数和void类型
- 地址传递
- 函数传递数组
- 引用
- 函数引用传参
- 返回指针的正确写法
- 函数返回数组
Windows环境搭建
傻瓜式安装,点击零基础安装CLion
第一个C++程序
#include <iostream>int main(int argc, char *argv[]) {std::cout << "Hello World!" << std::endl;return 0;
}
c++程序运行原理
代码->编译->程序
编译:将c++代码的文本,编译为计算机的可执行程序(.exe)
进行翻译的动作,需要一个工具,称之为:编译器
可执行C++代码编译工作的编译器有很多,课程选择:mingw
安装 mingw
path环境变量配置
cpp文件手动编译运行
g++ c1.cpp -o hello.exe
注释
单行注释
以//开头
多行注释
/*** 这是main函数* @return*/
int main() {cout<<"C++ Programming"<<"is Best language"<<endl;return 0;
}
常亮
在程序执行过程中值不会改变的量
字面常亮
被写到代码内的常量,又称为字面量
int main() {10;"HELLOWORLD";'A';return 0;
}
符号常亮
使用标识符去定义的常量
宏命令:#define 标识符 常量值
#include <iostream>
using namespace std;
#define FAT_BMI 28
#define J2C_RATE 4.19/*** 这是main函数* @return*/
int main() {cout << FAT_BMI << endl;cout << "焦耳转卡路里"<< " " << J2C_RATE << endl;return 0;
}
中文乱码问题
方案1:引入windows.h
#include <iostream>
#include <windows.h>
using namespace std;
#define FAT_BMI 28
#define J2C_RATE 4.19/*** 这是main函数* @return*/
int main() {// 设置UTF8编码SetConsoleOutputCP(CP_UTF8);cout << "BMI " << FAT_BMI << endl;cout << "焦耳转卡路里" << " " << J2C_RATE << endl;return 0;
}
方案2:system(“chcp 65001”);
#include <iostream>using namespace std;
#define FAT_BMI 28
#define J2C_RATE 4.19/*** 这是main函数* @return*/
int main() {// 只需要加入一句system("chcp 65001");cout << "BMI " << FAT_BMI << endl;cout << "焦耳转卡路里" << " " << J2C_RATE << endl;return 0;
}
变量
变量的声明和赋值
声明:int num;
赋值:num = 10;
#include <iostream>
using namespace std;/*** 这是main函数* @return*/
int main() {// 只需要加入一句system("chcp 65001");string name = "小明";int age = 21;float height = 180;char sex = 'm';cout << name<< "今年"<< age << "岁,"<< height << "身高,"<< sex << "性别,"<< endl;return 0;
}
快速声明赋值 int a = 1,b = 2,c = 3;
数据类型
整型
数据类型 | 占用空间 |
---|---|
short | 2字节 |
int | 4字节 |
long | Windows为4字节,Linux为4字节(32位),8字节(64位) |
long long | 8字节 |
#include <iostream>
using namespace std;/*** 这是main函数* @return*/
int main() {system("chcp 65001");short n1 = 2;int n2 = 3;long n3 = 4;long long n4 = 5;cout << "short 字节 "<< sizeof(n1) << endl;cout << "int 字节 "<< sizeof(n2) << endl;cout << "long 字节 "<< sizeof(n3) << endl;cout << "long long 字节 "<< sizeof(n4) << endl;return 0;
}
默认是有符号的 signed,无符号添加 unsigned
实型
数据类型 | 占用空间 |
---|---|
flat | 2字节 |
double | 8字节 |
long double | 16字节 |
全部都是有符号的
常量类型确定
char类型
字符串
字符串拼接
使用+,+只用于连接字符串类型
#include <iostream>
using namespace std;/*** 这是main函数* @return*/
int main() {system("chcp 65001");string major = "物理";int clazz = 1;string name = "小黑";cout << "我叫做" << name << " ,来自于" << major << to_string(clazz) << "班" << endl;return 0;
}
布尔类型
bool : true(等价于1),false(等价于0)
控制台输入
#include <iostream>
using namespace std;int main() {system("chcp 65001");string name;cout << "Enter your name: ";cin >> name;cout << "name : " << name << endl;return 0;
}
此方式的中文输入和输出都会正常
随机数产生
#include <iostream>
#include <random>
using namespace std;/*** 生成随机数* @param min* @param max* @return*/
int getRandomNumber(int min, int max) {// 创建一个随机数生成器random_device rd;mt19937 gen(rd());// 定义一个均匀分布的整数范围uniform_int_distribution<> dis(min, max);// 生成一个随机数并输出int random_num = dis(gen);return random_num;}int main() {int num = getRandomNumber(1,10);cout << num << endl;return 0;
}
枚举定义
enum Season {SPRING,SUMMER,AUTUMN,WINTER
};
数组
由一批相同类型的元素组成的集合
定义 数据类型 数组名[数组长度]
特点:
- 越界不会报错
- 内存连续且有序
数组便利
指针基础
特定类型数据在内存中的存储地址
64位操作系统,指针占用8个字节
野指针
被声明但未初始化(赋值)的指针
空指针
为了避免野指针,将指针赋值为空
int *p = NULL
int *p = nullptr
- NULL是C++内置的宏,表示空的含义,其本质是0
- nullptr是C++11标准引入的关键字,表示指针为空
上述,二选一即可
空指针也不是什么光荣的是,只在需要指针 但需要延迟赋值的场景下作为过度使用,不然声明也没有意义
指针运算
int main() {int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int *arr_ptr = &arr[0];int *arr_ptr1 = &arr[1];cout << *(++arr_ptr) << endl;cout << *arr_ptr1 << endl;return 0;
}
动态内存分配
非new指针是交由c++自动管理的,只有new出来的指针才是自己可以管理(delete)的
只有new 出来的指针才可以 delete
结构体
是一种用户自定义复合数据类型,可以包含不同类型的不同成员
struct Student {string name;int age;string gender;
};int main() {Student student = {"John",13,"Marvine"};cout << student.name << endl;return 0;
}
结构体默认值
struct Student {string name = "hello";int age = 18;string gender = "male";
};int main() {Student student = {"John"};cout << student.name << endl;cout << student.age << endl;return 0;
}
结构体数组
int main() {Student s1 = {"h1", 18, "male"};Student s2 = {"h2", 18, "male"};Student stus[3] = {s1, s2};for (auto stu : stus) {cout << stu.name << endl;}return 0;
}
结构体指针
int main() {Student s1 = {"h1", 18, "male"};Student *s1_ptr = &s1;cout << s1.name << endl;Student *s2 = new Student{"h2", 18, "male"};cout << s2->name << endl;delete s2;return 0;
}
结构体指针数组
函数
一个提前封装好的、可重复使用的、完成特定功能的独立代码单元
#include <iostream>
#include <random>
using namespace std;/*** 生成随机数* @param min* @param max* @return*/
int getRandomNumber(int min, int max) {// 创建一个随机数生成器random_device rd;mt19937 gen(rd());// 定义一个均匀分布的整数范围uniform_int_distribution<> dis(min, max);// 生成一个随机数并输出int random_num = dis(gen);return random_num;
}
无返回值函数和void类型
地址传递
void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}
函数传递数组
引用
某个已存在的变量的别名
函数引用传参
void swap(int &a, int &b) {int temp = a;a = b;b = temp;
}int main() {int a = 1, b = 2;cout << a << " " << b << endl;swap(&a, &b);cout << a << " " << b << endl;return 0;
}
引用是为了更方便的修改值
返回指针的正确写法
int * add(int a ,int b ) {int * result = new int;*result = a + b;return result;
}int main() {int a = 1, b = 2;int* result = add(a, b);cout << *result << endl;delete result;return 0;
}
函数内如果要返回指针,必须在函数内new空间,并返回指针,然后记得销毁delete
函数返回数组
这篇关于c++基础版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!