![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 86
ChakYu_
菜鸟一个
展开
-
c语言volatile关键字
简单地说就是防止编译器对代码进行优化。比如如下程序: 1 2 3 4 XBYTE[2]=0x55; XBYTE[2]=0x56; XBYTE[2]=0x57; XBYTE[2]=0x58; 对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器却会对上述四条语句进行优化,认为只有XBYTE[2]=0x58(即忽略前三条语句,只产生一条机器代码)。如果键入volatile,则编译器会逐一.原创 2020-07-24 14:15:40 · 240 阅读 · 0 评论 -
CPU位数、操作系统位数、计算机字长、C/C++基本数据类型长度
CPU位数 = CPU中寄存器的位数 = CPU能够一次并行处理的数据宽度(位数) = 数据总线宽度;//现在的处理器一般都是64位CPU为了实现其功能设计了指令集,即是CPU的全部指令,这就是机器语言。计算机的所有功能都是基于CPU的指令集。指令集和CPU的位数是有联系的。原创 2016-12-19 20:59:20 · 7703 阅读 · 1 评论 -
c++ 各进制赋值、int/char转换、sscanf/sprintf、位操作运算
一、各进制赋值1.16进制赋值int i=0x12AD;int i=0X12AD;int i=0x12Ad;int i=0X12Ad;//以上都是16进制,表示10进制173;2.8进制赋值int num=017;//数字前面加0就是8进制,017表示10进制15,若写018则编译出错。(error C2041: 非法的数字“8”(用于基“8”)原创 2017-08-10 16:19:53 · 5839 阅读 · 1 评论 -
c++ new/delete [],内存泄漏,动态数组
一概念new/delete是用于动态分配和撤销内存的运算符。new/delete是c++里才有的,c中是用malloc和free,c++虽然也可以用,但是不建议用。当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。删除一个指针p(delete p)实际意思是删除了原创 2017-05-25 20:27:42 · 3580 阅读 · 1 评论 -
c++ 异常处理(try catch throw)、命名空间
一、c++工具模板(函数模板、类模板)、异常处理、命名空间等功能是c++编译器的功能,语言本身不自带,这些功能已经成为ANSI C++标准了,建议所有的编译器都带这些功能,早期的c++是没有这些功能的。二、异常处理try:检查catch:捕捉throw:抛出用法如下:try{//可能出错的语句//可以含有throw}catch(类型){//如原创 2017-06-26 16:02:04 · 687 阅读 · 1 评论 -
c++ const
一、作用const是类型修饰符,经常用const来限制对一个对象或变量的操作,使用类型修饰符const说明的类型称为常类型,常类型的变量或对象的值是不能被更新的。const的用法很灵活,使用const将大大改善程序的健壮性。二、用法1.const常量const int NUM=100;in const NUM=100;以上两者一样,NUM不能被修改,且在声明时必须初始化。若原创 2017-03-20 15:33:56 · 247 阅读 · 1 评论 -
c++ 多态、虚函数、虚析构函数
1.若某种语言只支持类但不支持多态,则只能称为基于对象,不能说是面向对象。2.多态:向不同对象发送同一个消息,不同的对象会产生不同的行为,发送消息可以是调用函数等操作。函数重载、运算符重载都是多态。3.多态分为静态和动态:静态多态性:函数重载和运算符重载(实质也是函数重载),编译时就知道调用哪个函数;动态多态性:编译时不知道调用哪个函数,运行时才知道,是要通过虚函数原创 2017-07-14 17:13:19 · 641 阅读 · 1 评论 -
c++ 运算符重载、数据类型转换
1.运算符就是“+”、“>>”等符号,对运算符重载实质就是对函数的重载,这样运算符就能在原有基础上增加新功能,不能自己定义新运算符,只能对已有运算符重载;2.运算符重载格式:函数类型 operator 运算符名称(形参表){//具体操作}e.g. complex operator +(complex &c1)operator是关键字,函数名由operator和运算符原创 2017-07-17 15:37:01 · 555 阅读 · 1 评论 -
c\c++ 输入输出
一、分类1.标准输入输出键盘输入,显示器输出。2.文件输入输出以外存为对象,即硬盘、光盘等。3.串输入输出对内存中指定空间进行输入输出。二、c语言中的输入输出(#include )1.scanf,printfchar a,b;scanf("%c%c",&a,&b);printf("%c%c",a,b);scanf可以一直输入字符(包括tab,空格,但原创 2017-07-10 16:38:05 · 467 阅读 · 1 评论 -
ASCII码、c++ explicit
一、介绍1.ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统;2.总共8个bit,其中最高位始终为0,实际上是7位即0000000~01111111(0~127,共128个)。二、需要记的1.0=原创 2017-08-15 13:32:17 · 412 阅读 · 0 评论 -
软件设计中的高内聚、低耦合
一、内聚1.定义 一个模块内部各元素聚集、关联的程度。 定义的范围在一个模块内部。一个高内聚模块,应该恰好只做一件事。高内聚就是模块内各元素高度聚集、高度关联。2.特点 高内聚模块具备较好的可靠性、可重用性、可读性。3.分类 功能内聚、顺序内聚、.......、偶然内聚(排序由高内聚至低内聚)。 功能内聚——一个模块内所有元素的存在都是...原创 2019-09-24 21:12:37 · 1270 阅读 · 0 评论 -
c/c++ typedef
一、用途1.定义一种类型的别名typedef int ElementTpye;ElementTpye i;//相当于int i;typedef int* PInt(或者typedef int *PInt也一样);PInt i;//相当于int *i;2.与struct结合,省略struct本来应该这样,在声明新的结构体变原创 2017-03-17 14:50:25 · 464 阅读 · 1 评论 -
c++ vector
一概念vector是C++标准模板库(STL)中的部分内容,它是一个多功能的、能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,能够存放任意类型的动态数组,可以广义上认为是数组的增强版。vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所要放入的元素,vector 也提供了许多的方法原创 2017-05-25 15:10:52 · 224 阅读 · 1 评论 -
c++ 继承/派生、访问属性、构造函数
1.子类继承父类的继承方式:public,private,protected,不写则默认为private;2.子类会继承父类的全部成员(除了构造和析构函数),全盘接受,没得选,不能只继承一部分,而不继承另一部分,这样就可能造成数据冗余,在继承时可能会继承了一大堆没用的东西,这个问题目前的c++也无法解决,所以继承时父类的选择要谨慎。但是,可以改变继承的成员在子类中的访问属性,即可能全盘原创 2017-07-13 15:33:07 · 752 阅读 · 1 评论 -
c++ 类、对象、class
一、对象初始化1.不能在类声明中对数据成员初始化,因为类只是一个抽象类型,不占存储空间,无处容纳数据。2.若某类的数据成员都是public,则可以像结构体一样初始化,如 Time t={12,21,04};若数据成员有private或protected则不能这样初始化。3.构造函数没有返回值,不需要用户调用,也无法被用户调用。4.带参数的构造函数初始化格式:类名 对象名(实参1,实原创 2017-07-19 14:18:28 · 374 阅读 · 1 评论 -
套接字、UDP通信、TCP通信、TCP\IP协议簇
一、套接字(socket)1.单词socket:n.插座;穴;v.插入插座2.套接字就是源IP地址和目的IP地址、源端口号和目的端口号的组合,是通过传输层进行通信的。IP指定电脑,端口指定某一具体APP。3.套接字类型: 流式:SOCK_STREAM,基于TCP; 数据报式:SOCK_DGRAM,基于UDP; 原始式:SOCK_原创 2017-07-24 15:23:57 · 658 阅读 · 1 评论 -
c++ 函数模板、全局变量、register、存储周期
1.函数声明时可以简写,如:int max(int,int);只写参数类型就行。2.函数模板:格式:template 或template typename、class为关键字,class也是指函数而非类。e.g.template haha max(haha a,haha b){ //xxxxx}调用时像调用正常函数一样就行。3.有默认参数的函数:in原创 2017-07-22 16:46:47 · 740 阅读 · 1 评论 -
c++ 引用、指针
一、引用1.引用的作用:给变量起一个别名,是c++对c的扩充。原名和别名有相同的地址,根本上就是同一个东西,只是名字不一样。c++的引用机制主要是为了用作函数参数,增强函数传递数据的能力,比如swap函数,引用就是为了直接修改实参。2.声明方式:int a;int &b=a;&紧跟在数据类型后,即为引用声明符,其他地方为取地址符。注意:声明一个引用时必须同时初始化,之后不能再原创 2017-07-21 17:25:13 · 213 阅读 · 1 评论 -
c++ static、extern
一、static本质作用与static相对的关键字是auto,两者是一对。我们一般声明变量,如:int a,其实都是auto int a,只是auto省略了而已,但是static不能省略。要理解static,最好先理解auto。auto的含义是由程序自动控制变量的生存周期,通常是变量在进入其作用域的时候被分配,离开其作用域的时候被释放;而static则不同,变量在程序初始化时被分配,直到程序退原创 2017-03-03 15:56:41 · 401 阅读 · 1 评论 -
计算机 Little-Endian 和 Big-Endian (大小字节序、大小端)
一、概念endian:字节存储顺序,端模式。Little-Endian 和 Big-Endian表示的是计算机字节顺序,所谓的字节顺序指的是长度跨越多个字节的数据的存放形式(若只有一个字节则不需考虑字节序的问题)。对于整型、长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节);而Little endian 则相反,原创 2017-03-14 15:51:41 · 1451 阅读 · 1 评论 -
c/c++ union
一、概念中文称为共用体或联合体。主要用于共享内存,在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥其长处。在“联合”中,各成员共享一段内存空间, 一个联合变量的长度等于各成员中最长的长度。应该说明的是, 这里所谓的共享不是指把多个成员同时装原创 2017-03-14 15:33:07 · 317 阅读 · 1 评论 -
c++ class、struct区别
区别一默认访问控制不同(最主要)struct默认为public,class默认为private。这个访问控制既是指成员的默认访问属性,又指继承时默认的继承属性。区别二定义template时不同在模版中,类型参数前面可以使用class或typename,如果使用struct,则含义不同,struct后面跟的是“non-type template parameter”,而c原创 2017-05-25 13:39:19 · 304 阅读 · 2 评论 -
c/c++ char*、char[]
一句话,char *s是一个保存字符串首地址的指针变量,char a[]是许多连续的内存单元,单元中的元素为char类型。之所以用char *能达到char []的效果,还是字符串的本质,即给你一个字符串地址,便可以随心所欲的操作它。但是,char*和char a[]的本质属性是不一样的。原创 2017-02-28 14:13:38 · 5372 阅读 · 2 评论 -
c/c++ struct的定义、声明、对齐方式
一、定义/声明方式第一种:仅有结构体名,不定义/声明变量struct MyStruct{ int i; char a[10]; double b;};第二种:有结构体名,并声明变量名struct MyStruct{ int i; char a[10]; double原创 2017-03-02 15:17:14 · 5891 阅读 · 1 评论 -
c++ 数组、字符串、string
1.定义数组时,数组中元素的个数不能是动态的,不能用变量表示(const变量可以),必须是已知的。2.引用数组时只能引用数组中某个元素,不能引用整个数组。3.定义二维数组时,若同时全部初始化,则可省略第一维的长度,e.g.int a[][3]={1,2,3,4,5,6,7,8,9};原创 2017-07-22 14:52:05 · 479 阅读 · 1 评论