温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-11-26 13:40:09 来源:亿速云 阅读:566 作者:iii 栏目:大数据

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

一、动态数组:

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

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

2、动态数组的创建:

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

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

type_name *pointer_name = new type_name [num_elements]
 

我们来看实际例子:

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

 

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

#include <vector>

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

 
#include <array>

using namespace std;

array<int ,5> 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类举例分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI