C++ new关键字之:int* i1=new int; 与int* i2=new int();的区别

本文探讨了C++中使用new关键字进行对象初始化和内存分配的过程。通过实例分析,解释了不加括号与加括号的区别,以及如何通过new为整型和自定义结构体(如LNode)分配内存并设定默认值。着重讲解了指针变量i1、i2、i3以及LNode指针p1、p2的内存状态和初始化情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int i1=new int;
int i2=new int();

第一段表达式,i1是一个指向整型的指针。执行第一段语句后,创建了i1这个对象(如0x007ef728),但是指向的值不确定,随机生成一个大数(如-842150451);

第二段表达式,i2也是一个指向整型的指针。执行第二段语句后,创建了i2这个对象(如0x00d7f418),指向的值是确定的,为0。

因为第二段加了(),调用了int类的默认构造,将int型的值默认初始化为0。理解了这个之后,再来:

int i3=new int(10);

这段表达式,基本类似于之前的第二段,唯一的区别就是,i3指向的int对象的值为10。

同样的,来看下面的p1与p2:

typedef int ElementType;
struct LNode
{
	ElementType data;
	LNode* next;
};

int main()
{
    LNode* p1 = new LNode;
	LNode* p2 = new LNode();
}

p1结果:

可以看出p1是一个具体的地址,其指向的LNode没有初始化。

 p2结果:

 p2也是一个具体的地址,其指向的LNode已经默认初始化。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值