1.struct类型:C++中定义结构体变量不再需要struct关键字,并且结构体中可以包含函数,函数在结构体中声明,结构体外访问。结构体中的变量必须用结构体变量访问。操作如下:
#include<iostream> using namespace std; struct HU{//定义结构体 int data=1; char str[20]; void func(); }; void HU::func(){ cout << HU::data<<endl; } int main(){ HU k;//定义结构体变量 HU*p=&k;//定义结构体指针 p->func();//访问结构体中的成员,也可以*p.成员 while (1); return 0; }
2.动态内存申请:C语言中:malloc 不带初始化;alloc带初始化;realloc重新申请;
C++中:new申请 ,如int*p=new int(不赋值),int*p=new int[3](申请一段内存),int*p=new int(3)(带初始化,只有一个对象),int*p=new int[3]{1,2,3}(带初始化);delete删除(delete有两种形式:delete 指针和delete [] 指针,后者代表释放一段内存)。struct类型访问struct中的元素必须作内存二次申请。
3.内存池:允许申请一段内存供给程序使用,综合管理内存。malloc内存在堆区,new内存在自由区。
void arraymemory(){ char* data = new char[1024];//事情的处理所有的内存源于data int* pstr = new(data)int[3]{1,2,3};//new(内存的初始位置) int* pstr1 = new(data + 12)int [3]{2, 3,4};//等效于int*pstr1 = new(pstr + 3)int [3]{2, 3,4}; for (int i = 0; i < 3; i++){ cout << pstr[i] << "\t"<<pstr1[i]<< endl; } delete(data);//释放内存 data = nullptr; delete[]data; }
4.string类型:包含文件#include<string>(注意和strin.h的区别)
string基本操作:一:拷贝:string str3=str2
二:赋值:直接赋值即可
三:链接:用+链接,没有减法.如:string str=str1+str2
四:比较:直接比较即可
# C++中的string不能用到C语言中的字符串处理函数
string类型用c_str()或者用data()转换到char*类型
to_string 可以直接把数字转化成相应的字符串:string str=to_string(123)
C++中的字符串不包含\0,所以下标方式访问string类型时只需要数字符串的长度,如:
string str={"imissyou"}
for(int i=0;i<8;i++){
cout<<str[i];
}