
c++
好雨知时节呀
热爱分享,热爱生活
展开
-
想知道你写的C语言代码如何运行的吗?看这里!!!
C语言编译链接----幕后小故事我们在计算机中写的.c文件,被称为C语言源代码,这种源代码机器是不认识的,为了让机器认识C语言源代码,那么必须要经过这么几个过程(预处理、编译、汇编、链接、加载),让源代码变为机器语言的目标文件,才可以变为可执行程序。下图为编译过程:预处理器编译器汇编器链接器加载器源代码扩展的源代码汇编源代码目标代码可执行代码可执行文件讲解上图:这里的源代码姑且叫它sam...原创 2019-04-23 11:05:41 · 5449 阅读 · 0 评论 -
内存对齐?看这一篇就够了
什么是字节对齐?字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,一个字节等于8位二进制数,在UTF-8编码中,一个英文字符等于一个字节。字节按照一定规则在空间上排列就是字节对齐。C / C ++中的每种数据类型都有对齐要求(事实上它是由处理器架构强制实现的,而不是由语言强制实施)。处理器将具有与数据总线大小相同的处理字长。在32位机器上 ,处理字大小为4个字节。为什么...原创 2019-04-23 17:49:57 · 1000 阅读 · 1 评论 -
C++中重载,重写与重定义
重载:同名的函数在同一个作用域中,且函数参数列表类型必须不同( 参数个数 或 类型 或 顺序必须不同),且与返回值无关。例如:void test(){ cout << "我是返回void的函数" << endl;}int test(int a, int b){ cout << "我是返回int的函数" << endl; re...原创 2019-08-29 11:34:42 · 269 阅读 · 0 评论 -
如何知道结构体中某个成员相对于结构体起始位置的偏移量
其实是存在这样一个宏,专门提供求某个结构体中的成员相对于这个结构体的偏移量的:offsetof (type,member)返回值:返回成员偏移量,类型为size_t功能:具有函数形式的此宏返回数据结构或联合类型类型中成员成员的偏移值(以字节为单位)。 返回的值是size_t类型的无符号整数值,以及指定成员与其结构开头之间的字节数。使用方法:/* offsetof example */...原创 2019-08-25 13:57:10 · 1526 阅读 · 0 评论 -
二叉搜索树分析以及实现(C++)
二叉搜索树的定义: 二叉搜索树(英语:Binary Search Tree),也称为二叉查找树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree)。一棵空树或者具有下列性质的二叉树就是二叉搜索树:1. 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;2. 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根...原创 2019-07-21 12:07:22 · 387 阅读 · 1 评论 -
在C++中运算符.和->的区别
( . ) 操作符与 ->运算符的区别:相同点:点和箭头运算符都在C ++中用于访问类的成员。不同点:首先要明白的关键点是,在C ++中,声明为class,struct或union的类型被视为“类类型”。以下将说明两者区别:(它们用于不同的场景)1. a.b 被用于当 b 是对象 a 的成员,需要访问这个成员 b 的时候会使用a.b这样的方式。(对这种方式,如果 a...原创 2019-07-20 23:22:41 · 1363 阅读 · 0 评论 -
C++ 类的继承
继承的概念以及定义继承的概念继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。继承呈现了面向程序设计的层次结构,体现了由简单到复杂的认知过程。继承是类设计层次的复用。// 基类:定义人普遍特征的类class Person{public: void Print(){ c...原创 2019-06-17 13:02:47 · 277 阅读 · 2 评论 -
C++ 类中的静态成员
为什么要有类的静态成员?我们学习一个知识点,首先想到的是为什么要有这个东西的存在呢?对于C++ 类的静态成员存在的理由如下:有的时候类需要它的一些成员与类本身无关,而不是与类的各个对象保持关联。例如:一个银行账户类型类可能需要一个数据成员来表示当前基准利率。在此例中,我们希望利率与类关联,而非与类的每个对象关联。从实现的效率的角度来看,没必要每个对象都存储利率信息。而且更加重要的是,一旦利...原创 2019-06-20 20:04:08 · 1643 阅读 · 0 评论 -
C/C++ 转义字符与运算符优先级表
转义字符表:运算符优先级表:(数字越小,优先级越高)原创 2019-06-20 12:55:47 · 542 阅读 · 0 评论 -
C++ 内存管理以及常考面试题
直接管理内存C++语言定义了两个运算符来分配和释放动态内存。运算符 new 分配内存,delete 释放 new 分配的内存。使用 new 动态分配和初始化对象在自由空间分配的内存是无名的,因此 new 无法为其分配的对象命名,而是返回一个指向该对象的指针:int *pi = new int; // pi 指向一个动态分配的,未初始化的无名对象;以上 new 表达式...原创 2019-06-09 20:03:35 · 1313 阅读 · 0 评论 -
const 限定符的讲解
const 限定符如果我们希望定义一个变量,但是它的值是不可改变的。这种需求在很多方面都是有的。比如,用一个变量来表示缓冲区的大小,这时候我们想定义一个这样的值,在程序中定义好之后不能再别的地方再改变它的值。那么我们可以使用关键字 const 对变量的类型加以限定:const int buffSize = 1024;这样就把 buffSize 定义成为了一个常量,任何试图在程序的别的地方赋...原创 2019-06-13 08:43:19 · 161 阅读 · 0 评论 -
用vector打印乘法口诀表
打印效果:#include <iostream>#include <vector>using namespace std;int main(){ int j = 0; vector<vector<int> >vec(9, vector<int>(0)); for (int i = 0; i < 9; i++){ ...原创 2019-05-30 12:48:20 · 301 阅读 · 0 评论 -
C++ 模板学习
模板概念的提出:我们在学习C语言的时候,比如要交换俩个 int 数值的时候,我们会手动的实现一个整数的 Swap() 函数,到了下一个需要交换俩个 double 数值时候,又要实现自主的 double 的Swap() 函数。以此类推,通过函数重载也可以实现Add() 类似的工作。但是这种方法非常耗时费力的工作,抛开这个问题不说,这些类型不同的函数再被用到的几率很小,所以会导致维护性较低。正是因为...原创 2019-05-21 18:01:13 · 410 阅读 · 0 评论 -
C++发展史
什么是C++?C++是一门应用非常广泛的计算机程序设计语言。它是一种通用的程序设计语言,支持多重编程模式,例如过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计和设计模式等。C++发展历史C++语言有C语言发展而来。C++语言是美国贝尔实验室的比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup)博士以及同事于20世纪80年代初期在C语言的基础上发明并实现的,最初被称为C wit...原创 2019-05-07 23:01:34 · 939 阅读 · 1 评论 -
C语言模拟实现输入密码
C语言对于实现字符验证,没有提供真正的验证函数,那么我们可以借用 strcmp() 函数,实现字符的比较,C语言对字符的比较叫做“字典序”。#include <stdio.h>#include <string.h>int main(){ int i = 0; char pwd[10] = { 0 }; printf("请输入保险箱密码:"); while (i...原创 2019-05-20 09:41:07 · 2221 阅读 · 0 评论 -
C++指针与引用异同
什么是引用?引用就是别名的意思,它就是同一块内存单元的不同名称。常用于代替传值方式,传递参数和返回值。具有指针的特点,可节省内存复制带来的开销。语法格式:type &ref = var;其中,type 是类型,& 是引用的说明符,ref 是引用的名称,var 是与这个引用同类型的变量名称。表示ref是var的别名,并且与var使用相同的内存单元。指针与引用区别:引用...原创 2019-05-09 12:05:29 · 151 阅读 · 0 评论 -
命名空间详解(c++)
为什么使用命名空间?假设我班有俩个同学,一男一女都叫Eric,但是如果他俩同时在我面前我只叫Eric的话,他俩会不知道我在叫他俩哪位?同样的,我们将这种现象放在代码中。程序员对对象命名的时候,一般都会起一些有意义的名称。在一段代码中会现很多的实体,这些实体可能拥有不同的功能,但是他们有同样的名称。但是,c++中采用的是单一的全局变量命名空间,在这单一的空间中,实体必须有唯一的名称。现实中会经常...原创 2019-05-06 00:08:14 · 199 阅读 · 0 评论