网页制作与网站建设技术大全 下载,福州如何做百度的网站,做网站要,wordpress通过关键词Cmake
CPP程序开发过程 计算机硬件—机器语言—汇编—cppcpp—机器(gcc)Make(makefile)—本地智能批处理翻译机制Cmake—跨平台生成不同设备上的makefile进行执行
Cpp基础学习
基本知识
基本格式
#includeiostream
using namespace std;…Cmake
CPP程序开发过程 计算机硬件—机器语言—汇编—cppcpp—机器(gcc)Make(makefile)—本地智能批处理翻译机制Cmake—跨平台生成不同设备上的makefile进行执行
Cpp基础学习
基本知识
基本格式
#includeiostream
using namespace std;
int main(){cout hello cpp endl;system(pause);return 0;
}变量 意义 方便管理内存给一段指定内存空间起名 16进制可以表示一个内存空间—给内存起名称a—a就是变量创建 数据类型 变量名 变量初始值 常量 不可修改的数据定义方式 #define宏定义—#define 常量名 常量值const修饰变量 const 数据类型 常量名 常量值 关键字 有特殊含义且不能被再被命名—不要用关键字进行命名 标识符名规则 标识符不可以是关键字标识符只能由字母数字下划线第一个字符不能为数字标识符区分大小写
数据类型
存在意义—给变量分配合适的内存空间sizeof—输出字节—取决于多少位的操作系统—统计数据类型所占内存大小 语法—sizeof(数据类型或者变量) 有效数字—所有展示数字的位数实型—浮点型 float—4字节double—8字节默认定义数据是double因此float f1 3.14f这样才能真正定义为float一般显示6位有效数字 字符型—表示单个字母—占用一个字节—char 单引号字符型变量并不是把字符本身放入内存中存储而是将对用的ascii编码放入到存储单元查看ascii—cout (int)ch endl;常见 a—97A—65 转义字符 用于表示一些不能显示出来的ascii字符常见 \n—换行\t—水平制表—8个字符空间//—反斜杠/必须输出两个 字符串型 两种风格 char 变量名[] “字符串” — C风格string 变量名 “字符串” — CPP风格 — #include 布尔数据类型 truefalse 数据的输入 用于从键盘获取数据 cin 变量
int a 0;
cout 请输入a: \n endl;
cin a;新型类型转换方式
c语言—(type)(expression)缺点 这种类型转换容易产生不良后果在源码中无法快速定位所有使用强制类型转换的语句 cpp将强制类型转换分为四种不同类型 语法 ***_cast(expression) 四个不同的关键字 static_cast—静态类型转换 用于基本类型间的转换不能用于基本类型指针间的转换用于有继承关系类对象之间的转换和类指针之间的转换 const_cast 用于去除变量的只读属性强制转换的目标类型必须是指针或引用 dynamic_cast—只能用于指针间 用于有继承关系的类指针用于有交叉关系的类指针间转换具有类型检查功能需要虚函数的支持 reinterpret_cast 用于指针类型间的强制转换用于整数和指针类型间的强制转换
运算符
算术运算符赋值运算符比较运算逻辑运算
流程结构
选择结构 if三目运算符switch switch中表达式类型只能是整型或者字符型switch不可以判断区间 循环结构 whiledowhilefor 跳转语句 breakcontinuegoto goto 标记
一维数组
特点 连续内存空间每个数据元素都是相同的 定义 数据类型 数组名[数组长度]数据类型 数组名[数组长度] {数值1, 数值2…}数据类型 数组名[] {值1, 值2,…}; 数组名的用途 可以统计整个数组在内存中的长度可以获取数组在内存中的首地址
int arr[] {1,2,3}
int len sizeof(arr)
int ev_len sizeof(arr)/sizeof(arr[0])数组首地址访问的两种形式 cout arrcout arr[0]元素和地址访问不一样
二维数组
定义方式 数据类型 数组名称[行数][列数]数据类型 数组名称[行数][列数] {{1,2,3},{2,3,4}}数据类型 数组名称[行数][列数] {1,2,3,2,3,4}数据类型 数组名[][列数] {1,2,3,2,3,4} 数组名称 查看二维数组所占内存空间查看首地址
函数
值传递问题 形参发生变化实参不会变化 函数声明 int max(int a, int b); 分文件编写 .h文件中包含.cpp中的所有库函数依赖只声明不定义.cpp关联后只需要定义即可
指针
概念 通过指针间接访问内存通过指针变量记录内存的地址编号指针就是用来保存地址 定义指针 数据类型 *指针变量名 初始化方式 数据类型 *p 变量 *p代表解应用—可以修改数据指针所占的内存大小 32位操作系统下占用4个字节—sizeof后不论什么类型只要是指针占的内存只依赖于操作系统的大小 const修饰指针 const修饰指针—常量指针—const int * q a—指针的指向可以改但是指针指向的数值不能改const修饰常量—指针常量—int * const p a—指针的指向不可以改但是指针指向的数值可以改const修饰指针同时又修饰常量—const int * const p a—指针的指向和指针指向的值都不可以改
指针和其他的配合使用的配合使用
利用指针访问数组中的元素—数组名就是数组第一个元素的地址指针和函数—地址传递—实现对调用主函数变量的修改
结构体
概念—结构体属于用户自定义的数据类型允许用户存储不同的数据类型
struct student
{string name;int age;
};
// 直接定义
struct student
{string name;int age;
}ss;调用和变量定义
struct student s1;
student ss; //可省略struct
struct student s2 {...};
s1.name zhangsan;结构体数组
struct student s1[] {{zhangsan, 18},{lisi, 22}
};
s1[1].age 32;结构体指针
struct student s1[] {{zhangsan, 18},{lisi, 22}
};
struct student * ss s1;
cout ss-age endl;结构体嵌套结构体
struct student {string name;int age;
};
struct teacher t1{string name;int age;struct student s1;
};结构体做函数参数 值传递—形参改变实参不变地址传递—形参变实参也变将值传递改为地址传递可以保证传参过程中开销较小但是这种方式会导致函数内可以改变结构体信息 解决—const加入在函数形参加上const即可 void test(const int *s)