C/C++
从前有座山a
这个作者很懒,什么都没留下…
展开
-
笔记3(从c到c++)引用
引用引用是给一个变量起别名定义引用的一般格式:类型 &引用名=变量名;int a=1; int &b=a;//b是a的别名,因此a和b是同一个单元(注意:定义引用时一定要初始化,指明该引用变量是谁的别名) int &b;//error在实际应用中,引用一般用...原创 2019-05-17 21:25:53 · 108 阅读 · 0 评论 -
位运算
11=0000 101113=0000 1101一、常见的位运算1、~ 按位取反 ~11=1111 0100(不分正负数)2、&按位与 11&13=0000 10013、^按位异或 11^13=0000 01104、|按位或 11|13=0000 11115、>>按位右移 11>>1= 00000 1...原创 2018-08-04 19:23:11 · 994 阅读 · 0 评论 -
获取一个字节数据二进制1的个数
#include <stdio.h>//获取一个字节数据二进制1的个数int Getbits1(unsigned char ch){ int count = 0; while(ch != 0) { if(ch%2 !=0)//取余得到数字 { count++; } ch /= 2;//丢弃最右边的数据 } return count;}i...原创 2018-08-04 18:56:36 · 1344 阅读 · 0 评论 -
数据类型转换
类型转换:1、显式转换 2、隐式转换int a=(int)12.5;(显式转换) int a='a'+1-12.5*2;(隐式转换)1、窄的数据类型变宽的数据类型2、同类型的无符号比有符号宽(不同类型比较要转成相同类型的)3、整型起(整型是运算的起点)4、最终的数据类型以赋值符号左边为准int main(){ //char a = 'a'+'...原创 2018-08-04 18:39:05 · 374 阅读 · 0 评论 -
程序运行的步骤
程序运行的过程如下图:预处理命令:带#一、预编译(预处理):预编译过程主要处理那些源代码文件中的以“#”开始的预处理命令。比如#include1.将所有的“#define”删除,并且展开所有宏定义。2.处理所有的条件预编译指令.比如“#if”,“#ifdef”,“#elif”3.处理“#include”预编译指令,将被包含的文件插入到该预编译指令的位置。注意,这个过...原创 2018-08-02 21:09:09 · 7108 阅读 · 0 评论 -
数组
一些基本概念:数组里的数据通过数组的下标访问。初始化:定义的时候赋值叫初始化。局部变量:定义在函数内部的变量。 全局变量:定义在函数外部的变量。局部变量定义的时候如果没有初始化,那么它里面的值是个随机值(不是0)。聚合类型:1、数组 2、结构体聚合类型初始化时,如果只初始化一部分,剩余部分为0.数组初始化时可以不写长度。如:int drr[]={1,2,3,...原创 2018-07-31 21:26:30 · 657 阅读 · 0 评论 -
结构体
结构体又称自定义数据类型将信息打包存放在一起而不是分开存放。关键字 StructStruct Student 定义一个结构体,结构体名首字母尽量大写。{ char name[20]; int age;};int 三个基本操作int a=10; 定义一个普通变量;int arr[10]={0}; ...原创 2018-07-24 22:34:28 · 251 阅读 · 0 评论 -
魔方矩阵n=4k
如一个八阶魔方矩阵,分成四个四阶矩阵。1、从1开始从上往下从左往右依次填入数据,遇到对角线不填,但数字仍加一。如图12、从64开始也是从上往下从左往右依次填入数据,框内有数据的不填,但数字仍减一。如图二图1:图2:问题的关键在于填不填人数据,即判断对角线的位置。1、从左上到右下的对角线第一条线:0,4 1,5 2,6 3,7 ...原创 2018-07-23 15:15:00 · 480 阅读 · 0 评论 -
动态内存
定义一个数组时不能有变量例如:int arr[n]这种写法就是错误的求一个n以内的素数,n的值不是确定的,那怎么才能需要多少分配多少呢?由这里引出动态内存//筛选法求n以内的素数void SiftPrime(int n){ //int arr[n];//?? //int arr[101];// int *p = (int *)malloc(n*sizeof(int));//这里...原创 2018-07-22 17:51:48 · 159 阅读 · 0 评论 -
常见数字类型
数字类型 数字类型 所占字节数 char(字符型) 1 short int(短整型) 2 int (基本整形) 4 long int(长整型) 4 long long int (双长整型) 8 float(单精度浮点型) 4 double(双精度浮点型) 8 long double 8/12 bool(布尔...原创 2018-07-20 19:28:21 · 7829 阅读 · 0 评论 -
递归
程序调用自身的编程技巧称为递归。递归作为一种算法在程序设计语言中广泛使用。一个过程或函数在其定义或说明中有直接或间接调用自己的一种方法。递归的处理过程,代码如下;//Age(5):第五个人的年龄//Age(4):第四个人的年龄//Age(3):第三个人的年龄//Age(2):第二个人的年龄//Age(1):第一个人的年龄//Age(n):第n个人的年龄//Age(n...原创 2018-07-20 18:05:09 · 173 阅读 · 0 评论 -
魔方矩阵
魔方矩阵又称幻方,是有相同的行数和列数,并在每行每列、对角线上的和都相等的矩阵。魔方矩阵中的每个元素不能相同。3*3魔方矩阵1、1放在第一行中间2、后面的数字放在当前数字上一行后一列。3、如果当前位置已有数据则放在前一个数字的下一行同列。3*3魔方矩阵 8 1 6 3 5 7 4 9 2 //魔方阵v...原创 2018-07-20 13:22:27 · 10636 阅读 · 0 评论 -
笔记1(从c到c++)
bool类型逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假)存储字节在不同编译系统中可能有所不同,vc++中为1个字节可以当整数用(true一般为1,false为0)const限定符用const给字面常量起个名字(标识符),这个标识符就称为标识符常量,因为标识符常量的声明和使用形式很像变量,所以也称为常变量。定义的一般形式:const 数据类型 常量名=常...原创 2019-04-23 16:36:40 · 92 阅读 · 0 评论 -
字符串
字符串是以(\0)结尾的零个或多个字符序列。c中没有字符串这个数据类型。只能通过字符数组(允许修改)或字符指针(不允许修改)来存储字符串变量字符串拷贝。以数组的形式将字符串输出利用数组void Mystrcpy(char *des,const char *src)//const不允许修改src的值{ int i; for( i=0;i!='\0';i++) { des[i...原创 2018-10-29 21:49:13 · 163 阅读 · 0 评论 -
c++函数默认值、函数重载、inline函数
c++函数形参可以给默认值。函数声明时可以给默认值函数有默认值,没有实参,用默认值函数有默认值,有实参,用实参形参和实参:从左向右匹配,从右向左依次赋值。函数的默认值:1、自右向左依次赋值 2、不能重复赋值(声明中给出默认值,定义中再不允许给出默认值) 3、一般给在声明上_cdecl:c的标准调用约定_stdcall:windows的标准调用约定_f...原创 2019-01-08 21:41:47 · 318 阅读 · 0 评论 -
笔记2(从c到c++)
C++中增加的作用域标识符::1、用于对与局部变量同名的全局变量进行访问2、用于表示类的成员#include<iostream>using namespace std;int val=100;int main(){ int val=40; cout<<val<<endl; cout<<::val<<endl;/...原创 2019-05-16 21:23:00 · 103 阅读 · 0 评论 -
一个不能被继承的类
class A;class Base{private: Base(){} friend class A;//友元关系不可继承};class A:virtual public Base{public: A(int a = 0) :ma(a){}protected: int ma;};class B;virtual public Base{};int main(...原创 2019-04-01 10:19:53 · 187 阅读 · 0 评论 -
c++智能指针(auto_ptr)
auto_ptr的简单实现#include<iostream>using namespace std;/* 智能指针 boos库里的智能指针 c++11以前ato_ptr 后 unique_ptr shared_ptr weak_ptr*///auto_ptr智能指针的实现template<typename T>class Smar...原创 2019-03-18 21:21:17 · 176 阅读 · 0 评论 -
c++类的生存周期
#include<iostream>using namespace std;/* 类和对象 1、构造函数 初始化对象所占内存空间 2、析构函数 释放对象所占资源 3、拷贝构造函数 用一个已存在的对象来构造一个相同类型的对象 形参必须使用引用...原创 2019-03-18 21:03:51 · 384 阅读 · 0 评论 -
智能指针_继承多态
自主的内存回收机制:1、手动开辟 2、系统释放栈上的内存:1、系统开辟 2、系统释放堆上的内存:1、手动开辟 2、手动释放对象的生存:1、开辟内存 2、调用构造函数对象的销毁:1、调用析构函数 2、释放内存int *p=new int 堆上开辟内存,把操作的所有权限交给栈上的变量,栈上的内存系统释放,而堆上的内存需要手动释放可以把权限...原创 2019-03-16 21:40:03 · 682 阅读 · 0 评论 -
C++方法调用&&类类型的返回类型&&函数指针
常对象不能调用普通的成员方法常对象只能调用常方法普通对象 能调用常方法常方法 不能调用普通的成员方法普通的成员方法可以调用常方法不能返回局部变量的指向或者引用返回值规则: 1、类类型 都是以临时量的方式带回(寄存器无法取地址) 2、其他类型(内置类型)<=4字节 由eax寄存器带回 ...原创 2019-03-13 16:12:48 · 1018 阅读 · 0 评论 -
C++类中的默认函数(构造函数 、析构函数、拷贝构造函数、赋值运算符的重载函数)
对象的生成:1、开辟内存 2、系统调用构造函数对开辟内存进行初始化1、构造函数:构造函数名称和类名相同 有this指针 默认构造函数CGoods() {} 没有参数,可以重载 构造函数没有办法手动调动,只能系统调动CGoods good...原创 2019-01-17 20:36:01 · 519 阅读 · 0 评论 -
函数堆栈调用
在经典的操作系统里,栈总是向下增长的。在i386下,栈顶由称为esp的寄存器进行定位,压栈的操作使栈顶的地址减小,弹出的操作使栈顶地址增大eax是累加器,它是很多加法乘法指令的缺省寄存器。ebx是基地址(base)寄存器,在内存寻址时存放的基地址eax是计数器(counter),是重复前缀指令和Loop指令的内定计数器edx则总是被用来存放整数除法产生的余数c语...原创 2019-01-13 22:44:06 · 188 阅读 · 0 评论 -
编译链接原理
1)预编译(生成*.i文件)1>将所有的“#define”删除,并且展开所有宏;2>处理掉所有条件预编译指令,如:“#if”、“#ifdef”、“#elif”、“#else”、“#endif”;3>处理“#include”指令,这是一个递归过程;4>删除所有的注释“//”和“/* */”;5>添加行号和文件名标识;6>保留所有的#prag...原创 2019-01-12 16:14:22 · 258 阅读 · 0 评论 -
4G虚拟内存空间布局
ALU算术逻辑单元32位处理机 32 指计算机最多一次处理的比特位进程地址空间需要隔离,防止恶意的程序修改其他程序的内存数据,因此计算机中引入虚拟地址空间。4GB虚拟地址空间布局如下图所示每个程序运行起来以后,它将拥有自己独立的虚拟地址空间。所有的进程都拥有自己的用户空间,但却共享一个内核空间。用户空间:1、128M大小的不可访问区域(保留区)不可读、不可...原创 2019-01-11 19:10:23 · 2540 阅读 · 0 评论 -
c和c++动态内存开辟&newnamespace
c中动态开辟内存空间:malloc 函数原型 void * malloc(size_t size); size_t--------无符号整型 操作系统----》内核驱动----》硬件 void*是一个半开半闭区间,只知道动态内存起始地址而不知道什么时候结束 voi...原创 2019-01-10 22:36:34 · 339 阅读 · 0 评论 -
c和c++(c whith class)的相互调用&引用
c和c++生成函数符号规则不同c++调用c .cpp加extern"c" extern"c"下包含的是以c语言的规则来处理的extern"c"//extern"c"下包含的代码是以c语言的规则来处理的{ extern int Sum(int,int)}c调用c++: 1、c++源文件可以修改,.cpp加extern...原创 2019-01-10 21:07:09 · 789 阅读 · 0 评论 -
New和Delete的区别
New和malloc的区别?C中动态开辟内存: malloc函数开辟 free函数释放Void* malloc(size_t size)Void free(void* ptr)C++中动态开辟内存:New关键释放字开辟 DeleteNew 关键字Int *p=new int;Delete 关键字Delete p;1、New是关键字 malloc是函数2、...原创 2019-07-21 09:21:16 · 892 阅读 · 0 评论