c++中的动态数组和动态结构体、string类举例分析

这篇文章主要介绍“c++中的动态数组和动态结构体、string类举例分析”,在日常操作中,相信很多人在c++中的动态数组和动态结构体、string类举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”c++中的动态数组和动态结构体、string类举例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

谢通门ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

一、动态数组:

1、面向对象编程与传统的过程性编程的区别:

面向对象编程它主要是强调在运行阶段(不是在编译阶段)进行决策。运行阶段指的是程序正在运行,编译阶段指的是编译器将程序组合起来时;一个比较形象的比喻:运行阶段就好比度假时,选择参观哪些景点取决于天气和自己的心情(这种方式就比较灵活了);而编译阶段更像是不管什么情况下,都坚持之前的决定(这种方式的话就比较死板了)。

2、动态数组的创建:

(1)首先你的弄明白啥动态数组,从字面意思来看,就是这个数组是动态的,可控制的,也就是我们刚才提到的面向对程编程,它侧重程序在运行阶段,这也就是意味着我们动态数组,在运行阶段的时候,如果程序员确实需要它,程序员就可以来创建它;如果不需要它,那么程序员就不用来创建它。

(2)创建动态数组通用书写格式:

type_name *pointer_name = new type_name [num_elements]
 

我们来看实际例子:

//new运算符返回第一个数组元素的地址,并把该地址赋给指针p
int *p = new int[10];

 

这里还用两种方式来创建动态数组:第一种就是使用模板类vector;第二种使用模板类array(更方便,更加安全)

#include 

using namespace std;
int n;
cin>>n;
vector(int) vi(3);
vi[0]=1;
vi[1]=2;
vi[2]=3

 
#include 

using namespace std;

array ai = {1,2,3,4,5};
 

(3)回收使用new运算符分配的内存空间:

delete [] p;
 

注:我们在c语言里面使用malloc分配内存大小,使用free来释放分配的内存大小。

同时我们这里可以看到有一个"[]",这个就是要注意一个使用规则了:如果使用new时,带"[]",则使用delete释放内存也要带;反之亦然。下面是错误的使用例子:

int *pt = new int;
short *ps = new short[34];
delete [] pt;  //error
delete ps; //error
 

二、动态结构体:

1、创建动态结构体:

动态结构体的概念和动态数组的概念理解一致。我们现在来看一下动态结构体时如何被创建的:

inflatable *p = new inflatable;
 

这里将把存储inflatable(表示结构体类型)结构的一块可用内存的地址分配给指针p了。实际例子如下:

strcut ti{
int good;
int bad;

}

ti p =  new ti;

 

三、string类:

大家应该都知道在c语言里面我们是没用用来表示字符串的数据类型的关键字的,但是我们在c++里面可以使用string关键字来表示字符串数据类型。以前在c语言里面我们要表示字符串的话,一般是下面这种方法来表示:

char a[12] = "hello world";

 

现在我们在c++里面就可以直接使用string来表示一个字符串定义了,不用用数组法那么麻烦了:

string str1;
string str2 = "hello world";

str1=str2;

str2[1] = e;
 

我们可以看到使用string来定义字符串,可以把它赋值给别的字符串变量(正确的说应该是string类实例化的一个对象),同时要访问字符串里面的元素,也可以采用数组下标的方式来访问;同时也可以进行字符串合并:

str3=str1+str2;

到此,关于“c++中的动态数组和动态结构体、string类举例分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


新闻标题:c++中的动态数组和动态结构体、string类举例分析
当前地址:http://hbruida.cn/article/gjhohs.html