C++小整理

整型字面值

 0开头为八进制 

020=2*8+4=20

 0x开头为十六进制

0x14=1*16+4=20

字面值的整数常量默认是int或者long

宽字符

#include<locale.h>

#include<wchar.h>

#include<stdlib.h>

wchar_t  y=L'';

//设置属性

setlocale(LC_ALL,"chs");

wprintf(L"%lc
",L'');

创建常量的通用格式

const type name=value;

强制转换的通用格式

typeName (value)

 声明数组的通用格式

typeName arrayName[arraySize];

short months[12];

将char数组视为一组用于存储一个字符串的char存储单元

string类变量是一个表示字符串的实体

string类

strcpy()

将字符串赋值到字符数组中

strcat()

将字符串附加到字符数组末尾

 

struct结构体

结构标记的用法与基本类型名相同,结构声明定义了一种新类型

可以使用成员运算符( . )来访问各个成员

可以同时完成定义结构和创建结构变量的工作,只需将变量名放在结束括号的后面即可

struct perks
{
        int key_number;
        char car[12];
}mr_smith,ms_jones;

共用体

共用体union是一种数据格式,能够存储不同的数据类型,但只能同时存储其中的一种类型

共用体每次只能存储一个值,因此它必须有足够的空间来存储最大的成员,所以共用体的长度为其最大成员的长度

用途之一:当数据项使用两种或更多种格式(但不会同时使用)时,可节省空间

例如:假设管理一个小商品目录,其中有一些商品的ID为整数,而另一些的ID为字符串,在这种情况下可以这样做

共用体常用于(但并非只能用于)节省内存,当前系统的内存多达数GB甚至数TB,好像没有必要节省内存,但并非所有的C++程序都是为这样的系统编写的

C++还用于嵌入式系统编程,如控制烤箱等,对这些应用来说内存非常宝贵,共用体常用于操作系统数据结构或硬件数据结构

指针和自右存储空间

计算机程序在存储数据时必须跟踪的3种基本属性

1. 信息存储在何处

2. 存储的值为多少

3. 存储的信息是什么类型

指针是一个变量,其存储的是值的地址,而不是值本身

指针名表示的是地址

manly是一个指针
manly表示的是一个地址
*manly表示存储在该地址处的值
int m=23int *p=&m;
//m和*p是一样的--->23
//&m和p是一样的--->地址

注意

int *p;

强调*p是一个int类型,C程序员使用

int* p;

强调int*是一种类型----指向int的指针,C++使用这种格式



int* p1,p2;

声明创建一个指针p1和一个int变量p2

对每个指针变量名,都需要使用一个*

在C++中,int*是一种复合类型,是指向int的指针

C++创建指针时,计算机将分配从来存储地址的内存,但不会分配用来存储指针所指向的数据内存

警告:一定要在对指针应用解除引用运算符(*)之前,将指针初始化为一个确实的,适当的地址

变量是在编译时分配的有名称的内存,而指针只是为可以通过名称直接访问的内存提供了一个别名

指针真正的用武之地在于  在运行阶段分配未命名的内存以存储值

使用new分配内存

告诉new需要为哪种数据类型分配内存;new将找到一个长度正确的内存块,并返回该内存的地址,将该地址赋给一个指针

int* pn=new int;

pn指向的内存没有名字,指向的是为数据项分配的内存块

为一个数据对象获得并制定分配内存的通用格式如下

typeName * pointer_name=new typeName;

使用delete释放内存

int * p=new int;
delete p;

这将释放p指向的内存,但不会删除指针p本身

一定要配对的使用new和delete,否则会发生内存泄漏(也就是说被分配的内存再也无法使用了,如果内存泄漏严重,则程序将由于不断寻找更多的内存而终止)

引用

引用必须初始化,引用类型的初始值必须是一个对象

赋值永远改变等号左侧的对象

原文地址:https://www.cnblogs.com/yangyuqing/p/10516216.html