当前位置: 首页 > news >正文

c++学习(一)

给变量起一个别名

本质上还是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乱七八糟的任意值(比如0x11000x00FF88
逻辑含义知道这里没有东西,特意指向“空”不知道这里有没有东西,瞎指了一通
访问后果必定崩溃(操作系统会拦截)可能不崩,可能崩,可能乱改数据(极度危险)
好不好调试好调试(崩溃时堆栈能定位到空指针)极难调试(程序诡异报错,甚至运行结果错误)
产生原因手动赋值为NULLnullptr1. 未初始化
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)

http://www.jsqmd.com/news/1168408/

相关文章:

  • 构建提速:本地与远程缓存协同的 CI 优化设计
  • 驰援广西洪涝灾害联合赞助爱心倡议
  • 2026年7月最新石家庄伯爵官方售后服务网点地址及客服电话一览 - 亨得利钟表维修中心
  • 苏州闲置手表回收全指南|就近回收渠道详细地址,提升回收价核心技巧,交易安全避坑方案,一站式上门到店双服务 - 生活时报
  • 上海宝山配镜实测!验光专业价格亲民,配青少年防控眼镜认准这家 - 林州鸿途网络
  • 2026开封成人高考机构推荐:7家正规机构深度测评,帮你精准避坑 - 商业科技观察
  • 2026 南京防水修缮深度测评:吉修匠 99.8 分,适配长江软土梅雨浅冻岩溶工况首选 - 资讯焦点
  • Gepard未来路线图:下一代实时语音AI的技术发展方向
  • 2026 AI做歌软件买断版权价格及商用选购指南
  • MXFP4量化技术终极指南:Qwen3.5-35B-A3B模型压缩与性能平衡的艺术
  • 高精度数据采集方案:ADS122U04与TM4C1299KCZAD应用指南
  • 外景 城市废墟破碎残破楼房
  • 163MusicLyrics技术架构解析:多平台歌词提取与智能处理系统设计
  • 2026 物流AI客服公司哪家靠谱?多家服务商实测,物流企业优选推荐 - 商业新知
  • 2026 年广州工业防腐彩钢瓦屋面翻新实测,本地厂房隔热降温商家排行 - LYL仔仔
  • 企业档案深度查询API:单一企业多维度工商数据尽调实践
  • PRL:SiC 表面过渡金属吸附原子晶格中的关联 Dirac 费米子与平带
  • 2026年无锡梁溪区无主灯,门墙柜一体装修公司盘点 - 装企自媒体训练营辉哥
  • 东莞机房拆除回收采购指南 合规审计全流程指引 - 广东再生资源回收
  • AutoRemesher自定义脚本编写:自动化工作流的实现方法
  • STM32L496AG与ADS122U04构建高精度数据采集系统
  • TLA2518与PIC18F57K42的精密数据采集系统设计
  • 英雄联盟终极工具箱:5分钟快速上手League Akari完全指南
  • 上海闵行区零投诉的二手房改造公司推荐
  • OpenCore Legacy Patcher技术重构:架构重塑让老Mac重获新生
  • 2026 长沙防水修缮深度测评:吉修匠 99.8 分,适配湘中软土膨胀土梅雨岩溶工况首选 - 资讯焦点
  • 2026筑宅安|海口阳光房漏水专业修缮,家装商用玻璃顶渗漏、屋面工程一站式根治渗水难题 - 筑宅安
  • 值传递vs引用传递:这道题我面了十次,每次都有人翻车
  • 2026成都成华区易奢福专业包包回收店|闲置箱包成色定级与高价变现指南 - ys韩
  • 2026宁波Loewe Puzzle回收哪家价高 易奢福扎根宁波三十年老店本地榜首 - 肉松卷