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

C++笔记之编译过程和面向对象

回顾: 

“abcd”//数据类型

字符串常量

const  char *p="abc"; 

new  STU

const   char *//8   指针的内存空间

int

float

指针的内存空间 p

指针指向的内存空间 "abc" 取决于字符串长度

指针变量的内容一级指针

指针变量的地址二级指针

const char *p="abc";

new申请空间 指针变量指向的内容

new完返回申请到的空间的首地址

molloc-》void*

 结构体中的指针

结构体内含有指针成员。

堆区结构体变量要先为结构体申请空间,然后为结构体里的指针申请空间;

释放的时候先释放结构体里的指针申请的空间,然后释放为结构体申请的空间。

栈区为结构体里的指针申请空间;

释放结构体里的指针申请的空间

拆房子

小盒子??? 内存泄漏

大房子(结构体)-》小盒子(name)

结构体和函数

结构体普通变量做函数参数

也是值传递,在函数内修改形参,不会影响外界实参

add(int a)(a)

add(int *a)(&a)

结构体指针变量做函数参数 

 地址传递,形参就是实参

char arr[10]="abc";

scanf("%s",arr);

结构体数组名做函数参数

地址传递

Int arr[10]  10  int

STU arr[10] 10 STU

结构体的大小 

只有成员变量占内存空间

而成员函数是不占内存空间的。

结构体变量占用的内存空间永远是所有成员中占用内存最大成员的整数倍(对齐问题)。

占用内存最大属性是score,占8个字节所以第一次会分配8个字节

将第一次分配的8个字节分配给age4个,分配给ch1个,含剩下3个字节

当需要分配给score时,发现只剩下3个字节,所以会再次开辟8个字节存储空间

一共开辟了8个字节空间,所以最终p占用16个字节 

联合 (共用体)

在C++中,有一个和结构体十分类似的数据类型,叫联合。与结构体相比,它更省内存空间。

union  联合名

{

   类型1    成员名1;

   类型2    成员名2;

    ....

   类型n    成员名n;

};

联合体所占的内存长度等于其最长成员的长度,也有叫做共用体;

共用体变量的地址和它的各成员的地址都是同一地址。

struct 3 三室一厅 abc

共用体 a

 同一内存段可以用来存放几种不同类型的成员,但每一瞬时只有一种起作用;

共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员的值会被覆盖;

大端存储和小端存储

枚举

enum  枚举名

{

    枚举元素1,

     枚举元素2,

     .......

枚举元素的值取决于定义时各枚举元素排列的先后顺序。

默认情况下,第一个枚举元素的值为0,第二个为1,依次顺序加1.

也可以在定义枚举类型时改变枚举元素的值 

代码不重要-》

思路-》

转化代码(语法)

C++程序的组成

1.预处理指令

#include<iostream>

全局声明和定义

函数      exit()

语句和表达式    a+b

if(a+b>0)

a+b;

内存管理

异常处理

C++程序中的预处理指令以井号(#)开头

如#include等

还有一种预处理指令叫#define

用于在编译之前对源代码进行文本 替换

宏由预处理器#define指令定义,

#define 名字  数字  常量

#define PI 3.14

 宏函数

 

参数需要()

计算表达式() 

 函数式宏只是做宏展开,不检查类型

条件编译

#ifdef(#ifndef) 宏

....

#else

...

#endlf

 windows

linus

多文件编程

a.cpp    fun1

b.cpp    fun2

c.cpp     fun

{

fun1

fun2

 1.把所有函数分散在多个不同的源文件cpp文件里(主函数通常单独在一个文件里)

2.为每个源文件分别写配对的以.h作为扩展名的头文件(主函数所在的源文件不需要配对的头文件

这些文件包含类的声明、函数原型、宏定义和常量等.

它们的主要作用是提供接口,让其他源文件知道如何使用这些声明和定义.头文件通常以.h或.hpp作为文件扩展名.

int  add(int a ,int  b) ;

3.修改所有源文件,在源文件里使用#include预处理指令包含必要的头文件(在.h中写函数声明,在对应的.cpp文件中写函数的实现)

4.主文件(.cpp)是程序的入口点,通常包含一个main函数.主文件负责将其他源文件编译链接在一起,

形成最终的可执行程序.

多文件编程时编译的命令:编译多文件程序的时候需要在g++命令后列出所有源文件的路径

test_1.cpp

#include "test_1.h"

#include "test_2.h"

test_2.cpp

#include "test_1.h"

#include "test_2.h"

循环引用

死循环

 解决头文件重复引用时的条件编译命令格式

#ifndef   头文件名  (全大写,用_连接)

#define  头文件名

//包含的头文件和函数声明

#endif

 

相关文章:

C++笔记之编译过程和面向对象

回顾&#xff1a; “abcd”//数据类型 字符串常量 const char *p"abc"; new STU const char *//8 指针的内存空间 int float 指针的内存空间 p 指针指向的内存空间 "abc" 取决于字符串长度 指针变量的内容一级指针 指针变量的地址二级指针 …...

ModuleNotFoundError: No module named ‘tqdm‘

报错信息&#xff1a; tqdm是一个快速、可扩展的Python进度条库&#xff0c;用于展示迭代器的长循环执行进度。 解决&#xff1a;通过以下命令安装 使用conda命令安装 conda install tqdm使用pip安装&#xff1a; pip install tqdm...

东京电影节公布2024年竞赛片评审团成员并对其业绩分别进行评介 没什么含金量

第37届东京国际电影节竞赛单元评审团名单正式公布。 周五&#xff0c;电影节组织者宣布&#xff0c;香港电影制片人杜琪峰、匈牙利电影制片人伊尔迪科恩耶迪、日本女演员桥本爱和法国女演员基娅拉马斯楚安尼将与之前宣布的评审团主席梁朝伟一起担任 2024 年主竞赛评审团成员。 …...

智能景区垃圾识别系统:基于YOLO的深度学习实现

基于深度学习的景区垃圾识别系统&#xff08;UI界面YOLOv8/v7/v6/v5代码训练数据集&#xff09; 1. 引言 景区垃圾识别是环保管理的重要任务之一。传统的人工清理方式效率低、成本高&#xff0c;而借助深度学习技术可以实现自动化的垃圾检测与识别&#xff0c;提高景区的清洁…...

ventoy和微pe可以共存吗?ventoy和pe共存使用教程

Ventoy新一代多系统启动U盘解决方案。国产开源U盘启动制作工具&#xff0c;支持Legacy BIOS和UEFI模式&#xff0c;理论上几乎支持任何ISO镜像文件&#xff0c;支持加载多个不同类型的ISO文件启动&#xff0c;无需反复地格式化U盘&#xff0c;插入U盘安装写入就能制作成可引导的…...

如何获取和安装SSL证书

SSL&#xff08;Secure Sockets Layer&#xff09;证书是用于加密网站服务器和客户端之间通信的一种数字证书。它通过HTTPS协议保护数据传输的安全性&#xff0c;防止数据被窃听或篡改。本文将指导您如何为您的网站获取并安装SSL证书。 步骤1&#xff1a;选择SSL证书提供商 首…...

makefile在IC设计中的使用笔记

1 makefile在IC设计中的地位 关于makefile的详细介绍可以参考第一个连接&#xff0c;里面的内容很多也很详细。但在数字IC设计中&#xff0c;并不会把所有的用法都用到&#xff0c;下面记录一下主要用到的规则。 2 IC设计涉及到的主要用法 2.1 变量的定义和使用 在makefile…...

Suno声称在受版权保护的音乐上训练模型属于“合理使用“

继美国唱片业协会&#xff08;RIAA&#xff09; 最近对音乐生成初创公司 Udio 和 Suno 提起诉讼之后&#xff0c;Suno 在周四提交的一份法庭文件中承认&#xff0c;该公司确实使用了受版权保护的歌曲来训练其人工智能模型。但它声称&#xff0c;根据合理使用原则&#xff0c;这…...

Java | Leetcode Java题解之第316题去除重复字母

题目&#xff1a; 题解&#xff1a; class Solution {public String removeDuplicateLetters(String s) {boolean[] vis new boolean[26];int[] num new int[26];for (int i 0; i < s.length(); i) {num[s.charAt(i) - a];}StringBuffer sb new StringBuffer();for (in…...

Taro学习记录

一、安装taro-cli 二、项目文件 三、项目搭建 1、Eslint配置 在项目生成的 .eslintrc 中进行配置 {"extends": ["taro/react"], //一个配置文件&#xff0c;可以被基础配置中的已启用的规则继承"parser": "babel/eslint-parser…...

Spring Cache框架详解

Spring Cache框架详解 Spring Cache是Spring框架提供的一个强大的缓存抽象层&#xff0c;旨在简化缓存技术的集成和使用。自Spring 3.1版本开始&#xff0c;Spring Cache就被引入以支持在Spring应用程序中添加缓存功能。随着Spring版本的迭代&#xff0c;Spring Cache的功能日…...

解决Html iframe 内嵌video标签导致视频无法全屏展示的问题

原因&#xff1a; 由于浏览器的安全策略所限制的。为了防止恶意网站利用全屏播放功能进行滥用或欺骗用户&#xff0c;浏览器对iframe中的视频播放做了限制。 在iframe标签中播放视频时&#xff0c;浏览器会根据安全策略阻止视频全屏播放。这是因为iframe标签中的内容被认为是第…...

谷粒商城实战笔记-110~114-全文检索-ElasticSearch-查询

文章目录 一&#xff0c;110-全文检索-ElasticSearch-进阶-两种查询方式二&#xff0c;111-全文检索-ElasticSearch-进阶-QueryDSL基本使用&match_all三&#xff0c;112-全文检索-ElasticSearch-进阶-match全文检索四&#xff0c;113-全文检索-ElasticSearch-进阶-match_ph…...

【开源】嵌入式Linux(IMX6U)应用层综合项目(1)--云平台调试APP

目录 1.简介 1.1功能介绍 1.2技术栈介绍 1.3演示视频 1.4硬件介绍 2.软件设计 2.1连接阿里云 2.2云平台调试UI 2.3Ui_main.c界面切换处理文件 2.4.main函数 3.结尾&#xff08;附网盘链接&#xff09; 1.简介 此文章并不是教程&#xff0c;只能当作笔者的学习分享&…...

AI人工智能分析王楚钦球拍被踩事件的真相

在2024年巴黎奥运会乒乓球混双决赛的热烈氛围中&#xff0c;中国队王楚钦与孙颖莎以出色的表现夺得金牌&#xff0c;然而&#xff0c;赛后发生的一起意外事件——王楚钦的球拍被踩坏&#xff0c;引起了广泛关注和热议。为了探寻这一事件的真相&#xff0c;我们可以借助AI人工智…...

C++客户端Qt开发——多线程编程(一)

多线程编程&#xff08;一&#xff09; ①QThread 在Qt中&#xff0c;多线程的处理一般是通过QThread类来实现。 QThread代表一个在应用程序中可以独立控制的线程&#xff0c;也可以和进程中的其他线程共享数据。 QThread对象管理程序中的一个控制线程。 run() 线程的入口…...

安装pnpm

安装pnpm&#xff08;Performant npm&#xff09;&#xff0c;即高性能的npm包管理工具&#xff0c;可以通过多种方式进行。以下是详细的安装步骤&#xff1a; 一、通过npm全局安装 打开命令行工具&#xff1a;在你的计算机上打开命令行工具&#xff0c;例如Windows的CMD、Pow…...

CSS平移实现双开门效果

CSS平移实现双开门效果 一共要三张图片&#xff0c;一张作为父级背景&#xff0c;两张为兄弟左右布局 父子结构布局 一张作为父级背景&#xff0c;两张为兄弟左右布局。之后添加鼠标悬停效果&#xff0c;两张子图分别从左右平移 [外链图片转存失败,源站可能有防盗链机制,建议…...

3096. 得到更多分数的最少关卡数目

3096. 得到更多分数的最少关卡数目 题目链接&#xff1a;3096. 得到更多分数的最少关卡数目 代码如下&#xff1a; class Solution { public:int minimumLevels(vector<int>& possible) {int s0;//两个玩家能得到的分数和for(int x:possible){sx0?-1:1;}int t0;/…...

AGI思考探究的意义、价值与乐趣Ⅳ

探究in context或Prompt对于LLM来说其根本意义&#xff0c;in context & Prompt Learning带给我们更深一层的提示是什么&#xff1f; 文章里的探索希望能够将in context或Prompt置身于一个更全局的视角来看待&#xff1a;将其视为在真实世界中时空认知流形所映射为数据流形…...

《数据结构》(C语言版)第1章 绪论(上)

第1章 绪论 1.1 数据结构的研究内容1.2 基本概念和术语 1.1 数据结构的研究内容 N.沃思&#xff08;Niklaus Wirth)教授提出&#xff1a; 程序算法数据结构 电子计算机的主要用途 早期&#xff1a;主要用于数值计算 后来&#xff1a;非数值计算&#xff0c;复杂的具有一定结构…...

【Pyhton】数据类型之详讲字符串(上)

本篇文章将详细讲解字符串&#xff1a; 1、定义 定义字符串时&#xff0c;字符串的内容被双引号&#xff0c;单引号&#xff0c;三单引号&#xff0c;三双引号中的其中一个被括住。 例如&#xff1a; 双引号&#xff1a; v1"haha" 单引号&#xff1a; v1hahah…...

算法小白的进阶之路(力扣6~8)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...

【期货】收盘点评。昨天说的,p2409棕榈油在今天或者周一会走出行情

收盘点评 昨天说的&#xff0c;p2409棕榈油在今天或者周一会走出行情。事实就是如此。震荡了几天了&#xff0c;波幅不大的来回震荡&#xff0c;其实主力是不想震荡的&#xff0c;但是不震荡自己的货和行情走不出来。所以我昨天就说&#xff0c;应该就是这一两天会走出一波小行…...

LBS 开发微课堂|Polyline绘制优化:效果更丰富,性能更佳!

为了让广大的开发者 更深入地了解 百度地图开放平台的技术能力 轻松掌握满满的技术干货 更加简单地接入 开放平台的服务 我们特别推出了 “位置服务&#xff08;LBS&#xff09;开发微课堂” 系列技术案例 第一期的主题是 《Polyline 绘制优化升级》 你还想了解哪些…...

VS Code设置C++编译器路径

C_Cpp.default.compilerPath是C/C编译器路径; python.condaPath是conda路径....

laravel项目配置

创建laravel项目 composer create-project --prefer-dist laravel/laravel 项目名称生成项目key php artisan key:generate.清理配置缓存 php artisan config:clearlaravel生成代码 官网链接 php artisan make:model Flight --all生成Flight类相关的文件&#xff0c;对应数…...

Python试讲

Python试讲 导语Python简介Python及其特点如何使用Python Python与计算计算变量 导语 本次试讲内容如下&#xff1a;Python简介与使用&#xff0c;Python与基本运算 辅助教材为 《趣学Python编程》和《Python编程从入门到实践》 Python简介 Python是目前入门最简单最好学的…...

RESTful API

RESTful API是一种基于REST (Representational State Transfer) 架构风格的应用程序编程接口。它通过使用HTTP协议的不同方法&#xff08;如GET、POST、PUT、DELETE等&#xff09;来对资源进行操作和传输数据。 使用RESTful API构建web应用程序需要遵循以下几个步骤&#xff1…...

NEEP-EN2-2020-Text1

英二-2020-Text 1 摘自新科学家&#xff08;New scientist&#xff09;2018年11月的文章《Rats can make friends with robot rats and will rescue them when stuck》。 以下为个人解析&#xff0c;非官方公开标准资料&#xff0c;可能有误&#xff0c;仅供参考。&#xff08;…...

广州专门做网站的公司/推广计划书范文

求职 地图 网页 应用 更多 关键词&#xff1a;C/C面试技巧及试题&#xff1f; C/C 试题有难有易&#xff0c;不能因为容易&#xff0c;我们就轻视&#xff0c;更不能因为难&#xff0c;我们就放弃。我们面对高薪就业的态度永远不变&#xff0c;那就是坚持、坚持、再坚持。出现问…...

白酒 网站模板/济南网络优化网址

Qt 之进程间通信&#xff08;IPC&#xff09;简述通信目的通信方式Qt进程通信TCP/IPShared MemoryD-BusQProcessSession Management更多参考QT5软件开发入门到项目实战PDF(配完整示例代码)(持续更新)Qt实现IPC进程间通信-mqueue消息队列QtDBus总结原文链接&#xff1a;https://…...

免费软件下载网站排行/济南做网站比较好的公司

加上引号就好了&#x1f44f; def foo(value: str|int|float|list|tuple):print(value)foo(None)...

1号网站建设 高端网站建设/四川网站seo

题目链接&#xff1a;http://poj.org/problem?id2955 题意&#xff1a;求相互匹配的括号个数。 一道简单的区间dp&#xff0c;按常规的套路来写就可以了。 #include <iostream> #include <cstring> #include <string> using namespace std; int dp[110][110…...

镇江推广公司/四川seo技术培训

创建 Spry 数据集 目录 创建 Spry HTML 数据集 创建 Spry XML 数据集 为数据集选择布局 动态表格布局 主/详细布局 堆积容器布局 带有聚光灯区域的堆积容器布局 不要插入 HTML 编辑数据集 使用设计时输入功能 关于 Spry 数据选择器 …...

WordPress发不出注册邮箱/seo入门教程seo入门

9个最经典的职场小 有一次&#xff0c;一个老强盗带着徒弟去银行&#xff0c;被警方追捕。两人狂逃&#xff0c;差点儿连裤子都跑掉了。好不容易甩掉了警察&#xff0c;两人上气不接下气&#xff0c;瘫倒在地上。 良久&#xff0c;惊魂稍定&#xff0c;徒弟说:“师父啊师父&am…...