C/C++教程

C与C++区别(二)

本文主要是介绍C与C++区别(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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];

}

 

这篇关于C与C++区别(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!