给变量起一个别名
本质上还是int类型,更方便,更易读
typedef int feet; feet distance;末尾不加f,那么就会识别为double类型
float ff = 3.14f;显示转换
int i=10; float f = static_cast<float>(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或nullptr | 1. 未初始化 2. 访问越界 3. 释放后未置空(悬垂指针) |
const 修饰指针
常量指针
指针的指向可以修改,但是指针指向的值不可以改。
*p=20 错误不可以改 p=&b 正确 指针指向指针常量
指针的指向不可以修改,但指针指向的值可以改
int* const p = &a;const修饰常量和指针
指针的指向不可以修改,指针指向的值也不可以改
指针++的操作
指针进行偏移。
p++;//指针进行偏移。函数传递数组
要传递数组头节点和传递数组长度
结构体
结构体定义 struct Student1 { string name; int age; int score; };C++ 规定:在函数体内(比如 main 的花括号 { } 内)定义的结构体,叫做“局部类”(Local Class)
const用来防止误操作
结构体变量创建
结构体变量创建 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)