cpp-new操作符

03 new操作符

在 c++中,可以使用new操作符在堆区开辟数据。

堆区数据的开辟:由开发手动开辟,手动释放。释放使用操作符delete。如果不释放,将会在程序运行结束之后由操作系统自动释放。

语法:创建:new 数据类型 删除:delete 地址

利用new创建的数据,会返回这个数据对应类型的指针。

#include <iostream>
using namespace std;
int* func1()
{
    int* p = new int(100); //创建
    return p;
}
void main()
{
    int* p = func1();
    int a = *p;
    cout << a << endl;
    delete p; //删除
}

运行结果:

100

在堆区中存放数组:

#include <iostream>
using namespace std;
void main()
{
    int* arr = new int[10]; //数组有10个元素。
    for (int i = 0;i < 10;i++)
    {
        arr[i] = i;
    }
    for (int i = 0;i < 10;i++)
    {
        cout << arr[i];
    }
    delete[] arr; //释放数组的时候需要加上中括号
}

结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)

0123456789

这边有注意的点:使用new创建单个数据的时候,使用的是小括号()。而创建数组的时候,使用的是中括号[]。如下所示:

int* p1 = new int(10);
int* p2 = new int[10];

int* p1 = new int(10);表示:p1存放10所在的地址

int* p2 = new int[10];表示:p2存放连续的 10 个 int 类型所在的地址。使用地址访问的时候,和数组一样,p2[0]就表示是p2中的第一个。

删除的时候是使用delete 空间地址。如果是删除一个数据,那么只要delete即可。如果删除的是数组,需要在 delete 后添加方括号,比如这样:delete [] 空间地址

int* p1 = new int(10);
int* p2 = new int[10];
delete p1;
delete[] p2;

请注意,new操作符获得的是一个存放在堆区内存地址。简而言之,使用new创建的对象是指针,需要使用解引用的方式才可以获取到真实的数据。

比如下面一段代码:

#include <iostream>
using namespace std;
int main()
{
    int a = 10;
    int* b = new int(20);
    cout << "a 的输出结果是:" << a << endl;
    cout << "b 的输出结果是:" << b << endl;
    return 0;
}

结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)

a 的输出结果是:10
b 的输出结果是:000002165A429380
文章「cpp-new操作符」,由本站用户「Admin」发布。文章仅代表Admin观点,不代表本站立场。
页面网页地址「https://xiaozhiyuqwq.top/p/820」。
如您对文章及其附件提出版权主张,或进行引用转载等,请查看我们的【版权声明】
无评论:-)

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇