• 发文
  • 评论
  • 微博
  • 空间
  • 微信

c++中的动态数组和动态结构体、string类学习总结

TXP嵌入式 2020-06-08 09:19 发文

大家周末好,今天给大家分享c++中的动态数组和动态结构体以及string类的学习总结,在今天写文章之前,给大家分享一个可以面试刷题的地方,如果大家平时没啥事情或者离面试时间比较久,可以尝试去牛客网里面去刷题,如下图所示:

图1

题库里面有企业面试题目,面试里面有一些网友的面试经验分享,对于缺乏面试经验的网友,我觉得非常不错的机会来提升自己。

一、动态数组:

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;




声明:本文为OFweek维科号作者发布,不代表OFweek维科号立场。如有侵权或其他问题,请及时联系我们举报。
2
评论

评论

    相关阅读

    暂无数据

    TXP嵌入式

    TXP嵌入式主要分享linux和...

    举报文章问题

    ×
    • 营销广告
    • 重复、旧闻
    • 格式问题
    • 低俗
    • 标题夸张
    • 与事实不符
    • 疑似抄袭
    • 我有话要说
    确定 取消

    举报评论问题

    ×
    • 淫秽色情
    • 营销广告
    • 恶意攻击谩骂
    • 我要吐槽
    确定 取消

    用户登录×

    请输入用户名/手机/邮箱

    请输入密码