Unreal虚幻_C++学习
我使用到是 Clion 代码编辑器下载地址:https://www.jetbrains.com/products.html#type=ide
汉化教程:
Clion --> Preferences --> Plugins --> 搜索 Chinese --> install
C++入门练习代码示例:
//导入 iostream库
#include <iostream>
//入口函数
int main() {
// 导入 std 命名空间
using namespace std;
//单独导入 cout endl cin
// using std::cout;
// using std::endl;
// using std::cin;
// 输出语句 cout 属于std 命名空间
cout << "Hello World!!!";
//输出 换行\n换行
cout << endl;
cout << "我是你爸爸呀?\n";
//练习根据输入的年龄 来计算多少个月
//创建一个int 变量 名字为 age
int age;
cin >> age; //输入 age年龄
int month = age * 12; //计算月数 *表示乘号
cout << "在地球上生存了"<<month<<"个月\n";
//此 输入是为了防止 执行到return 是程序结束
cin >> age;
//返回一个 整形
return 0;
}变量命名规则
整型(基本类型)
字符类型
代码示例:
//
//main.cpp
//004-整型
//
//Created by linjie on 2020/12/29.
//
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
// insert code here...
short s = 3.1;
int i = 1;
long l = 111;
//加了unsigned 整型类型 不能赋值负值 且 正值的存储量扩大两倍
unsigned short e = -3;
int b = 10000000000000000;
unsigned int f = 40000000000000000;
cout << "----------数值类型--------" << endl;
cout << "型" << s << endl;
cout << "整型" << i << endl;
cout << "长整型" << l << endl;
cout << "----------最大最小值--------" << endl;
cout << INT_MAX << endl; //int 存储最大值
cout << INT_MIN << endl; //int 存储最小值
cout << SHRT_MAX << endl; //Short 存储的最大值
cout << SHRT_MIN << endl;//Short 存储的最小值
cout << "----------unsigned--------" << endl;
cout << e << endl;
cout << b << endl;
cout << f << endl;
//字符类型
//ASC 码表 http://ascii.911cha.com/
char aa = ' '; //空格符号 也属于一个字符
char bb = 'a';
char cc = 97; // 97 对应 ASC码表的 字符 a
char dd = '\\n';
int ee = 'a'; //字符可以 给int类型 赋值
cout << "----------char字符也属于整型--------" << endl;
cout << "aa =>" << aa << endl;
cout << "bb =>" << bb << endl;
cout << "cc =>" << cc << endl;
cout << "dd =>" << dd << endl;
cout << "ee =>" << ee << endl;
cin.get();
return 0;
}输出结果:
Bool布尔类型
//
//main.cpp
//bool类型
//
//Created by linjie on 2021/1/6.
//
#include <iostream>
using namespace::std;
int main(int argc, const char * argv[]) {
//bool布尔类型
bool a = true; //1
bool b = false; //0
//为bool 类型 赋值 非0即1 1表示true
bool c = 100;
bool d = 2;
cout << "---------bool类型---------" << endl;
cout << "a =>" << a << endl;
cout << "b =>" << b << endl;
cout << "c =>" << c << endl;
cout << "d =>" << d << endl;
cin.get();
return 0;
}输出结果:
const常量
代码示例:
//
//main.cpp
//const-常量
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
using namespace::std;
int main(int argc, const char * argv[]) {
//变量是可变的
int a = 100;
a = 90;
//常量 不可变的量
const int b = 11;
//b = 10; //该行报错 常量不可变 只能赋值一次
return 0;
}浮点类型
代码示例:
//
//main.cpp
//浮点类型
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <climits> //引入函数库 才能输出__FLT_MAX__ 和 __FLT_MIN__
using namespace::std;
int main(int argc, const char * argv[]) {
//单精度 浮点
float a = 1.1;
//双精度浮点
double b = 2.222;
//长双精度浮点
long double c = 2.2222;
cout<< "浮点存储最大值" << __FLT_MAX__ << endl;
cout<< "浮点存储最小值" << __FLT_MIN__ << endl;
}输出结果:
简单练习:
//
//main.cpp
//浮点类型
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <climits> //引入函数库 才能输出__FLT_MAX__ 和 __FLT_MIN__
using namespace::std;
int main(int argc, const char * argv[]) {
//1.让用户输入自己的身高(米),然后把它转换成厘米输出出来。
float height;
cout << "请输入您的身高(米)=>";
cin >> height;
cout << endl << "您身高为 =>" << height * 100 << "厘米。" << endl;
//2.编写一个程序,让用户输入秒,然后把它转换成 多少天 多少小时 分钟 秒
float min;
cout << "请输入多少秒(自动转换)" ;
cin >> min;
cout << min / 60 / 24 << "天" << min / 60 << "小时" << min << "分钟" << min * 60 << "秒" << endl;
//3.要求用户输入一个班级的 男生和女生的数量,并输出女生的比例(百分比)
float Ncount;
cout << "请输入男生的数量 ==>";
cin >> Ncount;
float Wcount;
cout << "请输入女生的数量 ==>";
cin >> Wcount;
cout << "女生比例为 ==>" << Wcount/(Ncount + Wcount) * 100 << "%" << endl;
//输入一个 四位数 获取 个 十 百 千分位的数值
int shu;
cout << "请输入一个四位数 ==> ";
cin >> shu;
int ge = shu % 10;
int shi = (shu % 100) /10;
int bai = (shu % 1000) /100;
int qian = shu / 1000;
cout << "个位=>" << ge << " 十位=>" << shi << " 百位=>" << bai << " 千位=>" << qian;
}输出结果:
数组
//
//main.cpp
//数组
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <climits> //引入函数库 才能输出__FLT_MAX__ 和 __FLT_MIN__
using namespace::std;
int main(int argc, const char * argv[]) {
//语法: 变量类型 数组名字[长度] = {数组的值};
//第一种数组 赋值方式
int arr = {1,2,3,4};
//第二种赋值方式 赋值的 个数等于或小于声明的数组长度
int arr2 = {1,2,3};
//第三种赋值方式 不声明数组长度 自动根据你 赋值的个数自动确定数组长度
int arr3[] = {1,2,3,4,5,6,7,8};
//C++ 11 数组语法
int arr4[]{4,5,6,1};
cout << arr4[-1] << endl; //访问一个不存在的下标的值 输出1
cout << arr4 << endl; //访问一个不存在的下标的值 输出2
cout << arr4 << endl; //访问一个 存在的下标的值 输出4
arr4 = 100; //修改数组下标为0 的值
cout << arr4 << endl; //输出 100
}输出结果:
字符串
//
//main.cpp
//string字符串
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <climits> //引入函数库 才能输出__FLT_MAX__ 和 __FLT_MIN__
using namespace::std;
int main(int argc, const char * argv[]) {
//语法:string 字符串名字 = "值";
string str = "阿威";
//字符串拼接
string str1 = "黑狗";
string str2 = "牛逼";
string str3 = str1 + str2;
cout << str3 << endl; //黑狗牛逼
//字符串的长度大小 size()
cout << str3.size() << endl;
//输入getline不建议和cin进行混用
cout << "请输入任意信息=>";
getline(cin, str3);
cout << str3 << endl;
//字符串赋值
string str4 ;
string str5 = "队长啊星";
str4 = str5;
cout << str4 << endl; //队长啊星
cout << str5 << endl; //队长啊星
}输出结果:
结构体
//
//main.cpp
//struct结构体
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <climits> //引入函数库 才能输出__FLT_MAX__ 和 __FLT_MIN__
using namespace::std;
//定义结构体 在外部定义 每个函数都能访问
struct Test{
string type1;
string type2;
string type3;
};
int main(int argc, const char * argv[]) {
//结构体 申明赋值
Test t1{"怪物","英雄","物品"};
//调用方法结构体赋值申明的名字.结构体内定义的变量名比如:t1.type1
cout << t1.type1 << " " << t1.type2 << " " << t1.type3 << endl;
//结构体数组
Test test[]{{"怪物","英雄","物品"},{"怪物2","英雄2","物品2"},{"怪物3","英雄3","物品3"}};
//访问 结构体数组内的值
cout << test.type1 << " " << test.type2 << " " << test.type3 << endl;
}输出结果:
枚举类型
//
//main.cpp
//enum枚举类型
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <climits> //引入函数库 才能输出__FLT_MAX__ 和 __FLT_MIN__
using namespace::std;
//定义枚举 在外部定义 每个函数都能访问
enum HeroType{
ShuChu,//0
FaShi, //1
ShangDan, //2
DaYe, //3
FuZhu //4
};
int main(int argc, const char * argv[]) {
//调用枚举类型
//枚举类型 枚举变量名字 = 枚举内定义的值的名字;
HeroType heroType = ShuChu;
cout << heroType << endl; //0
heroType = FaShi;
cout << heroType << endl; //1
int aa = FaShi + 2;
cout << aa << endl; //3
heroType = HeroType(4);
cout << heroType << endl; //4
cout << ShangDan << endl; //2
}输出结果:
指针
//
//main.cpp
//指针
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <climits> //引入函数库 才能输出__FLT_MAX__ 和 __FLT_MIN__
using namespace::std;
int main(int argc, const char * argv[]) {
int a = 1;
int b = 2.5;
//& 取一个变量的内存地址
//* 取一个内存地址 存储的值
cout << "获取a变量内存地址=> " << &a <<endl;
cout << "获取a变量的值==> " << *(&a) << endl;
cout << "获取b变量内存地址=> " << &b <<endl;
cout << "获取b变量的值==> " << *(&b) << endl;
//指针定义
//语法: 变量类型* 变量名 = &值;
int* aa = &a;
int* bb = &b;
//输出地址
cout << aa << endl;
cout << bb << endl;
//输出值
cout << *aa << endl;
cout << *bb << endl;
int* cc = &a;
int* dd = &a;
//因为 cc dd 都指向同一个地址 那就变量a的地址 所以改变 a cc dd任意一个变量的值 三个值都会跟着改变
*cc = 100;
cout << a << " " << *cc << " " << *dd << endl;// 100 100 100
*dd = 200;
cout << a << " " << *cc << " " << *dd << endl; // 200 200 200
a = 11;
cout << a << " " << *cc << " " << *dd << endl;// 11 11 11
//空指针的申明 三种方式
int* ee = 0;
int* ff = NULL;
int* gg = nullptr; //C++11 的语法 nullptr专门为指针而生 空指针
//void 声明一个 可以接收任何类型的指针
void * hh;
hh = &a;
//hh = &b;
cout << *((int*)hh) << endl;// (int*)强制转换为int类型的指针数据
//new int 申请声明一个 新的内存
int * ii = new int;
*ii = 100;
cout << *ii << endl;
delete ii;//delete 删除指针
}输出结果:
指针和数组的关系
//
//main.cpp
//指针和数组的关系
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <climits> //引入函数库 才能输出__FLT_MAX__ 和 __FLT_MIN__
using namespace::std;
int main(int argc, const char * argv[]) {
//其实数组本身 就是一个指针
int arr[]{1,2,3,4,5,6,7,8,9,10};
cout << arr << endl; //数组本身就是一个指针 输出数组 就是输出其内存地址
cout << *arr << endl; //*号 取一个内存地址里的值 输出1 数组默认是指针
cout << *arr + 1 << endl; //*arr默认取第一个值 *arr+1表示取第二个值 依次类推 *arr+2就是取第三个值
//使用new 创建数组 new 表示开辟一个新的内存地址 所以不用了 要用delete删除
int * pp = new int;
//取值 赋值方式一
pp = 88;
cout << pp << endl;
//取值 赋值方式二 (指针方式)
*(pp + 1) = 99;
cout << *(pp + 1) << endl;
//删除 不用的 开辟的内存地址
delete[] pp;
}输出结果:
C++11 数组创建方式(推荐)
//
//main.cpp
//C++11 数组创建方式
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <climits> //引入函数库 才能输出__FLT_MAX__ 和 __FLT_MIN__
#include <array> //使用 C++11 数组创建方式 需要引入该类库
using namespace::std;
int main(int argc, const char * argv[]) {
//C++11 数组创建方式
array<int,6> arr1 = {1,2,3,4,5,6};
array<int, 6> arr2;
arr2 = arr1; //可以直接 数组 = 数组
cout << arr1 << "" << arr2 << endl;
cout << arr2 << "" << arr2 << endl;
cout << arr1 << "" << arr2 << endl; //数组这里声明最大长度为6 但是这里访问第七个值 也就是下标6 输出1 访问下标7 输出2 依次类推
}输出结果:
for循环
//
//main.cpp
//for 循环
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <array> //使用 C++11 数组创建方式 需要引入该类库
using namespace::std;
int main(int argc, const char * argv[]) {
array<int, 10> arr = {1,2,3,4,5,6,7,8,9,10};
//for循环
//语法:
// for (初始化变量; 循环条件判断; 变量自增长) {
// 方法体
// }
//循环输出数组里的值
for (int i = 0; i < arr.size(); i++) {
cout << arr << endl;
}
}输出结果:
组合赋值运算符 和 关系运算符
//
//main.cpp
//组合赋值运算符 和 关系运算符
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <array> //使用 C++11 数组创建方式 需要引入该类库
#include <string>
using namespace::std;
int main(int argc, const char * argv[]) {
//组合赋值运算符
// + - * / % (加 减 乘 除 取余)
// += -= *= /= %= (加等 减等 乘等 除等 取余等)
int a = 11;
int b = 22;
a += b; // a = a + b;33
cout << a << endl;
a -= b; // a = a - b;11
cout << a << endl;
a *= b; // a = a * b;242
cout << a << endl;
a /= b; // a = a / b;11
cout << a << endl;
a %= b; // a = a % b;11
cout << a << endl;
//逻辑运算符
// > >= < <= == != (大于 大于或等于 小于 小于或等于 等于 不等于)
int c = 11;
int d = 22;
int e = 11;
cout << (c > d) << endl; //输出0 0表示false 错误 满足就返回true 不满足返回false
cout << (c < d) << endl; //输出1 1表示true 正确 满足就返回true 不满足返回false
cout << (c >= e) << endl; //输出1 1表示true 正确 >= 大于或等于只要成立一个 满足就返回true 不满足返回false
cout << (c <= e) << endl;//输出1 1表示true 正确 <= 小于或等于只要成立一个 满足就返回true 不满足返回false
cout << (c == e) << endl;//输出1 1表示true 正确 == 等于满足 满足就返回true 不满足返回false
cout << (c != e) << endl; //输出0 0表示fasle 错误 != 不等于 不满足返回false 满足返回true
//字符串比较
char ch[] = "牛逼";
char ch2[] = "牛逼";
cout << (ch == ch2) << endl; //返回0 不相等 因为两个数组 比较的是内存地址 内存地址不相同所以返回0
cout << strcmp(ch, ch2) << endl; //这个比较特殊 返回0 这里的0表示相等 1表示不想等strcmp()比较两个char字符类型的数据是否相等
string str = "队长阿威";
string str2 = "队长阿威";
cout << (str == str2) << endl; //返回1 表示相等
}输出结果:
while循环
//
//main.cpp
//while 循环
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <array> //使用 C++11 数组创建方式 需要引入该类库
#include <string>
using namespace::std;
int main(int argc, const char * argv[]) {
//for循环与while循环比较
// for (初始化; 条件判断; 自增) {
// 方法体
// }
//语法:
// 初始化
// while(条件判断){
// 方法体
// 自增
// }
int i = 0;
while(i < 10){
cout << "循环执行了" << i+1 << "次" << endl;
i++;
}
}输出结果:
宏和类型别名
//
//main.cpp
//宏-类型别名
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <array> //使用 C++11 数组创建方式 需要引入该类库
#include <string>
using namespace::std;
//宏定义
//#define 别名 代码段
#define Start int main
//类型别名
//typedef 数据类型 别名;
typedef string XingString;
//宏调用
Start(int argc, const char * argv[]) {
XingString str = "类型别名";
cout << str << endl;
}输出结果:
do while循环和for循环第二种方式
//
//main.cpp
//do wile循环和for循环第二种方式
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <array> //使用 C++11 数组创建方式 需要引入该类库
#include <string>
using namespace::std;
int main(int argc, const char * argv[]) {
// 初始化
// do {
// 循环体
// 自增
// } while (循环条件);
int i = 0;
do {
cout << "第" << i+1 << "次循环" << endl;
i++;
} while (i < 10);
//for循环第二种方式输出 数组
// for(数据类型 别名 : 数组名称){
// 方法体
// }
array<int, 5> arr = {1,2,3,4,5};
for(int temp : arr){
cout << temp << endl;
}
}输出结果:
二维数组和循环嵌套
//
//main.cpp
//二维数组和循环嵌套
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <array> //使用 C++11 数组创建方式 需要引入该类库
using namespace::std;
int main(int argc, const char * argv[]) {
//int arr[行][列] = { {},{},{},{},{} };
//创建一个 5行5列的二维数组
int arr ={
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5}
};
//循环嵌套
for (int i =0; i < 5; i++) { //外层循环执行 一次
for (int j =0; j < 5; j++) { //内层循环 执行完 次
cout << i << " " << j << endl;
}
}
// 0 0
// 0 1
// 0 2
// 0 3
// 0 4
// 1 0
// 1 1
// 1 2
// 1 3
// 1 4
// 2 0
// 2 1
// 2 2
// 2 3
// 2 4
// 3 0
// 3 1
// 3 2
// 3 3
// 3 4
// 4 0
// 4 1
// 4 2
// 4 3
// 4 4
//先输出 行 在输出 列
for (int i =0; i < 5 ; i++) { //外层循环执行 一次
for (int j =0; j < 5; j++) { //内层循环 执行完 次
cout << arr << " ";
}
cout << endl;
}
// 1 2 3 4 5
// 1 2 3 4 5
// 1 2 3 4 5
// 1 2 3 4 5
// 1 2 3 4 5
//先输出 列 在输出 行
for (int i =0; i < 5 ; i++) { //外层循环执行 一次
for (int j =0; j < 5; j++) { //内层循环 执行完 次
cout << arr << " ";
}
cout << endl;
}
// 1 1 1 1 1
// 2 2 2 2 2
// 3 3 3 3 3
// 4 4 4 4 4
// 5 5 5 5 5
}if else判断语句
//
//main.cpp
//if else判断语句
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <array> //使用 C++11 数组创建方式 需要引入该类库
using namespace::std;
int main(int argc, const char * argv[]) {
int hp = 0;
//语法
// if(判断条件){
// 条件成立 执行这里的代码
// }else{
// 否则不成立 执行这里的代码
// }
if(hp == 0){
cout << "英雄已经阵亡" << endl;
}else{
cout << "英雄生命值很健康" << endl;
}
int age = 17;
// if(判断条件){
// 条件成立 执行这里的代码 然后跳出判断
// }else if(判断条件){
// 成立 执行这里的代码 然后跳出判断
// }else{
// 否则以上条件都不满足 执行这里的代码 然后跳出判断
// }
if(age < 18){
cout << "您未满18岁" << endl;
}else if(age >= 18){
cout << "您已成年可以尽情游玩" << endl;
}else{
cout << "否则执行我" << endl;
}
//if判断语句第二种写法 不需要方法体 默认紧挨到一行 为方法体代码
if(age == 17)
cout << "您今年17岁了" << endl;
}输出结果:
逻辑运算符
//
//main.cpp
//逻辑运算符
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <array> //使用 C++11 数组创建方式 需要引入该类库
using namespace::std;
int main(int argc, const char * argv[]) {
int a = 1;
int b = 11;
//逻辑运算符 &&(与) ||(或) !(非)
//&&(与) 必须两边条件 都满足才为true 否则其中一边不满足 则为false
bool result = a > 0 && a==1;
bool result2 = a > 0 && b==1;
cout << result << endl; //1 true
cout << result2 << endl; //0 false
//||(或) 两个条件 其中一边满足就为true 除非两个条件不满足 才为false
bool result3 = a > 0 || a==1;
bool result4 = a > 0 || b==1;
cout << result3 << endl; //1 true
cout << result4 << endl; //1 true
//!取反
cout << !true << endl; //0 false
cout << !false << endl; //1 true
}输出结果:
三元表达式
//
//main.cpp
//逻辑运算符
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <array> //使用 C++11 数组创建方式 需要引入该类库
using namespace::std;
int main(int argc, const char * argv[]) {
//三元表达式
//语法:判断条件?成立取这里的值:不成立取这里的值
int a = true ? 100 : 1;
cout << a << endl; //100
//相当于 =>
if(true){
a = 100;
}else{
a = 1;
}
cout << a << endl; //100
}输出结果:
switch判断
//
//main.cpp
//switch判断
//
//Created by linjie on 2021/1/7.
//
#include <iostream>
#include <array> //使用 C++11 数组创建方式 需要引入该类库
using namespace::std;
int main(int argc, const char * argv[]) {
//语法:
// switch (判断的变量) {
// case 判断条件:
// 该条件成立 执行这里的代码
// break; //执行完后跳出switch
// case 判断条件:
// 该条件成立 执行这里的代码
// break;//执行完后跳出switch
// case 判断条件:
// 该条件成立 执行这里的代码
// break;//执行完后跳出switch
// default:
// 上面全部条件不成立 执行这里
// break;//执行完后跳出switch
// }
int money = 100;
switch (money) {
case 100:
cout << "恭喜你成为至尊VIP1" << endl;
break;
case 1000:
cout << "恭喜你成为至尊VIP2" << endl;
break;
case 10000:
cout << "恭喜你成为至尊VIPMAX" << endl;
break;
default:
cout << "恭喜你一分没冲" << endl;
break;
}
}输出结果:
页:
[1]