C++动态内存的使用 | StriveZs的博客

C++动态内存的使用

在C中动态内存分配技术可以保证程序在运行过程中按照实际需要申请适量的内存,使用结果后还会释放,这种在程序运行过程中申请和释放的存储单元也称为堆对象。 在C程序中建立和删除堆对象使用两个运算符:new和delete   运算符new的功能是动态内存分配,语法形式为: new 数据类型 (初始化参数列表);   例如:

1
int *t = new int//这里是动态的创建了一个整形数据

这里需要的注意的是如果格式为:int *t = new int(); 这里的括号为对数据的初始化如果没有则不进行初始化。   使用delete进行对内存的释放。 创建一个动态一维数组:

1
int *t = new int\[5\];  //这里动态声明了一个一维数组

释放一个一维动态数组:

1
delete \[\] t;

创建一个动态二维数组

1
int (*t)\[5\] = new int \[5\]\[5\];

释放:

1
delete \[\] t;

一维数组用于字符串连接 (这里使用到了cstring头文件的strlen()得到字符串长度) 代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include<iostream>

#include<cstring>



using namespace std;



int main()

{

    char *string1 = new char\[100\];

    cout<<"输入第一个字符串:"<<endl;

    cin.getline(string1,100);

    char *string2 = new char\[100\];

    cout<<"输入第二个字符串:"<<endl;

    cin.getline(string2,100);

    char *string3 = new char\[100\];

    //使用string1连接string2

    for(int i=0;i<strlen(string1)+strlen(string2);i++)

        {

            if(i<strlen(string1))

                string3\[i\]=string1\[i\];

            else

                string3\[i\]=string2\[i-strlen(string1)\];

        }

    string3\[strlen(string1)+strlen(string2)\]='\\0';

    cout<<"字符串连接结果为:"<<endl;

    cout<<string3<<endl;

    delete \[\] string1;

    delete \[\] string2;

    delete \[\] string3;

    return 0;

}

结果: 这里给出一个使用cstring头文件进行字符串的连接实例: 代码:使用string 声明字符串  + = 是重载的进行字符串连接操作的函数

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<iostream>
using namespace std;

int main()
{
string string1,string2,string3;
cout<<"输入两个字符串二者之间用空格分隔:"<<endl;
cin>>string1>>string2;
cout<<"前一个字符串合成后一个字符串:"<<endl;
string3 = string1+string2;
cout<<string3<<endl;
return 0;
}

结果:

StriveZs wechat
Hobby lead  creation, technology change world.
  • Post author: StriveZs
  • Post link: 1126.html
  • Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.