博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++学习之基本概念
阅读量:7125 次
发布时间:2019-06-28

本文共 1556 字,大约阅读时间需要 5 分钟。

一、 大小端概念

Big-Endian和Little-Endian的定义如下:

Little-Endian 数据的低位字节位存放在内存的低地址端,高位字节存放在内存的高地址端。

Big-Endian 数据的高位字节位存放在内存的低地址端,低位字节存放在内存的高地址端

大端模式

低地址 -----------------> 高地址
0x12 | 0x34 | 0x56 | 0x78

小端模式

低地址 ------------------> 高地址
0x78 | 0x56 | 0x34 | 0x12

bool IsLittleEndian() {

int a = 0x1234;
char c = *(char *)&a;
if (c == 0x34) {
return true;
}
return false;
}

常用系统的大小端

目前Intel的80x86系列芯片是唯一还在坚持使用小端的芯片(windows系统就是基于该架构),ARM芯片默认采用小端,但可以切换为大端。另外,对于大小端的处理也和编译器的实现有关,在C语言中,默认是小端(但在一些对于单片机的实现中却是基于大端,比如Keil 51C),Java是平台无关的,默认是大端。在网络上传输数据普遍采用的都是大端模式。

二、 指针与引用的区别

引用必须在定义的时候进行初始化。如果是成员变量的引用类型,则必须通过构造函数初始化列表来初始化。

引用一经初始化之后,不能修改;而指针可以修改,重新指向其他变量。
因为引用不可变,所以没有必要用const修饰(视编译器不同,有的会产生警告,有的会产生编译错误);而指针有const,const的指针不可变
指针可以为NULL,而引用不能。
指针归根到底是一个变量,存储的是变量地址;而引用则是变量的一个别名,是指针的弱化版本。
sizeof(指针)得到的是指针的大小,而sizeof(引用)得到的是引用的变量的大小

三、free

free函数会对参数是否为NULL进行校验,所以free(NULL);不会引发程序崩溃。

 

四、 C++内存分配方式

C++的内存分配分为:堆、栈、全局/静态存储区、常量存储区。

堆:由程序员分配和释放,若程序员未释放,则在程序结束时由操作系统释放。堆是向着内存地址增加的方向生长。
栈:由编译器自动分配和释放,主要存储函数参数,局部变量等。栈是向着内存地址减少的方向生长。
全局/静态存储区:存储全局变量和静态变量。初始化的和未初始化的全局/静态变量分开存储。
常量存储区:存储程序中的常量。

五、 STL容器的实现方式

vector:通过数组来实现。vector每次扩容时,会扩大为当前需要容量的2倍。

map:通过红黑树来实现。查找非常快,查找算法复杂度为log2nlog2n
list:通过链表来实现。

六、 const用法

归纳为一句话就是:const永远是修饰它前面的内容。但有个例外就是const在最前面时,如const int *p;,等同于int const *p;。

七、static的作用

在函数体内,static变量只在第一次进入函数体内时被初始化。该变量存储在静态存储区。

在模块(源文件)内,被声明为static的函数只在该模块(源文件)内可见。
在模块(源文件)内,被声明为static的全局变量只在该模块(源文件)内可见。
在类内,被声明为static的成员变量必须在类的外部初始化,不属于类的任何对象,被整个类所拥有。
在类内,被声明为static的成员函数,不属于类的任何对象,被整个类所拥有,可以访问类的static成员变量。

 

转载于:https://www.cnblogs.com/xlsss159/p/10370207.html

你可能感兴趣的文章
图解Win 2003单网卡×××的实现
查看>>
ORACLE的基本语法集锦
查看>>
linux中的cmake和make的区别
查看>>
oracle日期时间型timestamp的深入理解
查看>>
windows修改远程桌面的端口+防火墙设置
查看>>
java web 开发分层
查看>>
我的友情链接
查看>>
可以用于switch语句的判断的数据类型总结
查看>>
MyBatis 总结
查看>>
Java多线程同步器
查看>>
Boyer-Moore高质量实现代码详解与算法详解
查看>>
MyBatis集合查询示例
查看>>
Java方法的重载
查看>>
weblogic 代码备份及部署重启
查看>>
第一章 NodeJs安装与配置
查看>>
ASP.NET分页组件
查看>>
动态规划
查看>>
Android webview使用详解
查看>>
Confluence 6 配置白名单
查看>>
input标签内容改变的触发事件
查看>>