C/C++语言中 指针复制与指针赋值的作用

int *a,*b;//声明两个指针变量

a=b; //指针复制:此语句使a指向的地址与b指向的地址相同,它们都指向同一内存区域。

*a=*b ; //指针赋值:此语句使a指向的地址(内存位置)的内容与b指向地址(内存位置)的内容相同,但a与b指向的地址不一定相同

&a=&b ; //这个一般比较少用,使指针a本身的内容与指针b本身的内容相同

总结指针的用处:用于指向与其类型相同的地址,重点在于指向地址,而不在于指针本身的内容(故&a=&b一般仅作理解,比较少用)

一句话:指针a是一个地址, *a是它指向的内容,&a是它本身的内容

测试代码:

void CtestPtrDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码

	int* a = new int;
	int* b = new int;
	
   delele a;
   a=NULL;
   
	a = b;

	*a = 4;

	CString strTip;
	strTip.Format(_T("b = %d"),b);
	AfxMessageBox(strTip);
}

上面代码含义:创建两个内存地址a、b,地址不同,a=b则代表a被抹去了,地址以及内容全成了b,此时只存在b,但复制之前需要将a清理为空。
显示的是b的地址而非b的值,如果想要b的值,则用strTip.Format(_T(“b = %d”),*b); *代表取值,&代表引用地址
在这里插入图片描述

发布了58 篇原创文章 · 获赞 42 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/m0_37251750/article/details/98171337