- C++结构体类型上不再需要struct关键字,直接用结构体名即可
#include#include using namespace std; struct MM{ char name[20]; int age; } int main(){ struct MM mm;//这是C语言的 MM mm;//C++ }
- C++结构体中允许函数存在
- 在结构体中声明,在结构体外实现,当然可以直接在结构体中实现
#include#include using namespace std; struct MM{ char name[20]; int age; void printdata(){//声明函数,在结构体外定义函数 } } MM::printdata(){//结构体外定义函数,要用结构体名限定 cout<
- 结构体中函数访问数据,是可以直接访问的
- 学会调用,和调用数据成员方式时时一样的
- 对象(结构体变量).成员
- 对象指针—>成员
- *(对象指针).成员
- 在没有写构造函数和权限限定词的时候,用法和C语言的用法是一样
#includeC++动态内存申请#include using namespace std; struct MM{ char name[20]; int age; void print(){ cout< print(); MM *p=&mm3; p->print(); }
- C语言的动态内存申请
- malloc 不带初始化
- calloc 带初始化
- realloc 重新申请
- free 释放
- C++动态内存申请引入了新的关键字new(申请)delete(释放)
- 单个变量内存申请
- 数数组动态内存申请
- 结构体内存申请
- delete释放内存只有两种写法,delete指针,delete[ ]指针,不存在delete[ ][ ]指针这种写法
补充:C申请的内存是在堆区,C++申请的内存是在自由存储区单个变量内存申请
#include#include using namespace std; int main(){ int*pint=new int; delete=pint; print=nullptr; } 数组内存申请,长度可以是变量,只要是值就行
#include#include using namespace std; int main(){ int*pint=new int[3]; delete=pint[]; print=nullptr; } 结构体内存申请,结构体没有构造函数的时候只能用大括号初始化
#include#include using namespace std; struct MM{ char name[20]; int age; void print(){ cout< 内存池
- 允许大家申请一段内存,共给程序使用,综合管理内存,通俗一点讲就是new了一段内存,那一段内存里边还可以再new一段内存。
#includestring类型using namespace std; int main(){ char* memorySum = new char[1024]; int* pNum = new(memorySum) int[3]{ 1,2,3 }; char* pstr = new(memorySum + 12) char[20]{ "ILoveyou" }; }
- string创建
- 带初始化
- 不带初始化
- 通过另一个字符串创建
- string基本操作
- 拷贝
- 赋值
- 链接
- 比较
- C++string与C语言string.h
- C++的string是一个自定义类型(类)
- C++string 不能用到C语言的字符串处理函数
- C++如何转换为C语言的char* ,两个函数
- c_str() 函数和data()函数
- string类其他函数操作
https://docs.microsoft.com/zh-cn/cpp/standard-library/basic-string-class?view=msvc-170string创建
- 第一种创建
#include#include using namespace std; int main(){ string str1; str1="I leve you!" cout<<"str1="<
- 第二种创建
string str2=("I leve you!") cout<<"str2="<
- 第三种创建
string str3="I leve you!" cout<<"str3="<都是一样的,还可以通过赋值别的字符串初始化也是可以的
str3="I leve you!" string str3=str4 cout<<"str4="<基本操作之拷贝
#include#include using namespace std; int main(){ string str1 = "one"; string str2 = str1 ; cout<<"str2="< 基本操作之赋值
string str1 = "I leve you";基本操作之链接
直接相加就行,不需要过多的操作,非常简单,不过需要注意一点,没有相减string str1 = "one"; string str2 = "two"; string str3=str1+str2; cout<<"str3="<基本操作之比较
直接比较就行,不需要过多的操作,非常简单,依旧按照C语言char* 去比较,C++中尽量用string,不要用char*,比较熟练的可以用string str1 = "one"; string str2 = "two"; if (str1 > str2) // { cout <<"大的 "<< str1 << endl; } else { cout << "大的 " << str2 << endl; }C++如何转换为C语言的char*
string str1 = "ILoveyou"; printf("%sn", str1.c_str()); printf("%sn", str1.data());都是一样的,随便一个都可以使用
直接把数字直接转换为相印的字符串:to_string()函数
string str2=to_string(1234) cout<



