C++中关于new的作用对象:

new的作用对象是指针本身,而不是指针指向的值的空间。

拿最基本的数据类型int来举例子:

当p与q同指向一个同变量 i 时,此时无论是对*p还是*q进行操作改变的都将是实际的变量 的值。这是因为对指针的解引用操作是在"值"这一概念下进行的。 

但是,看似一样的情况,当p与q同指向一个地方,再对p或者q进行new的操作以后,并不是像我原本想象的一样p与q此时同指向一块相同的空间。相反,如果进行的是p=new int,那么这时q还指向原来的那片空间,而p则指向新的一块空间。通过下面的代码即可验证:

#include<iostream>
using namespace std;
int main()
{
	int i = 1;
	int* p = &i, * q = p; //让int类型的指针p指向i,再让一个int类型的指针q指向p所指向的变量
	q = new int;   //对q进行new的操作
	*q = 2;        //对*q的值进行改变
	//分别输出*p与*q的值来观察:
	cout << "*p=" << *p << endl;
	cout << "*q=" << *q << endl;

	return 0;
}

输出:*p=1
           *q=2

不会在网页上画图,所以手动自己在ipad上画了一张图传了上来hhh

 

最后再声明一下,这本来就是很简单的问题,写到csdn上就是用来写给自己的,如果顺手能帮助到和我陷入同样思维误区的人当然更好了。写的有什么不对的欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值