c++学习(一)
给变量起一个别名本质上还是int类型更方便更易读typedef int feet; feet distance;末尾不加f那么就会识别为double类型float ff 3.14f;显示转换int i10; float f static_castfloat(i);%取模运算当10%20结果为0 两个小数不能取模运算随机数种子利用当前系统时间生成随机数防止每次随机数都一样系统生成随机数srand((unsigned)time(NULL)); int random_value rand(); printf(原始随机数: %d\n, random_value); int dice rand() % 100 1; printf(1~100之间的随机数: %d\n, dice);分文件编写创建头文件 swap在主文件中#include swap.h#include swap.h void swap(int a, int b) { int temp a; a b; b temp; cout a a endl; cout b b endl; }定义指针int a 10;指针定义的语法 数据类型*指针变量名int* p;让指针记录变量a的地址p a; cout a的地址为 a endl; cout 指针p为: p endl;使用指针可以通过解引用的方式来找到指针指向的内容指针前加*代表解引用找到指针执行的内存中的数据*p 1000; cout a a endl; cout *p *p endl;空指针空指针指向内存中编号为0的空间 空指针指向的变量是不可以访问的初始化指针变量int* p NULL;野指针访问野指针报错空指针和野指针都不要去访问不是我们自己申请的空间int* p (int *) 0x1100;对比维度空指针 (Null Pointer)野指针 (Wild Pointer)指针里的值明确为0比如0x00000000乱七八糟的任意值比如0x1100、0x00FF88逻辑含义我知道这里没有东西特意指向“空”我不知道这里有没有东西瞎指了一通访问后果必定崩溃操作系统会拦截可能不崩可能崩可能乱改数据极度危险好不好调试好调试崩溃时堆栈能定位到空指针极难调试程序诡异报错甚至运行结果错误产生原因手动赋值为NULL或nullptr1. 未初始化2. 访问越界3. 释放后未置空悬垂指针const 修饰指针常量指针指针的指向可以修改但是指针指向的值不可以改。*p20 错误不可以改 pb 正确 指针指向指针常量指针的指向不可以修改但指针指向的值可以改int* const p a;const修饰常量和指针指针的指向不可以修改指针指向的值也不可以改指针的操作指针进行偏移。p;//指针进行偏移。函数传递数组要传递数组头节点和传递数组长度结构体结构体定义 struct Student1 { string name; int age; int score; };C 规定在函数体内比如 main 的花括号 { } 内定义的结构体叫做“局部类”Local Classconst用来防止误操作结构体变量创建结构体变量创建 struct Student1 s1; s1.name shan; s1.age 18; s1.score 200; struct Student1 s2 {shan,23,300}; 定义结构体时创建结构体变量 struct Student { //成员列表 string name; int age; int score; // }s3;结构体指针用指针访问结构体中的成员属性是通过-去实现struct Student1 * p1 s1;struct可省略 cout p1-name;函数地址传递int a; int b; swap(a, b); void swap(int* p1, int* p2) { int temp *p1; *p1 *p2; *p2 temp; }左值可以用取地址符获取内存地址的表达式即“有身份”右值不可以对表达式取地址因为它是临时值即将被销毁。结构体地址传递void printStudent2(const Student1* p)