c++中指针,指针的引用,指针的指针的区别 - C++ Programmer's Cookbook - C++博客
c++中指针,指针的引用,指针的指针的区别
看例子和结果:
#include"stdafx.h"
#include<iostream>
usingnamespacestd;
voidFreePtr1(intptr1)
{
delete ptr1;
ptr1=NULL;
}
voidFreePtr2(int&ptr2)
{
delete ptr2;
ptr2=NULL;
}
voidFreePtr3(intptr3)
{
deleteptr3;
ptr3=NULL;
}
voidmain()
{
cout<<"---------------------------------------"<<endl;
intp1=newint;
p1=1;
cout<<"p1="<<p1<<endl;
FreePtr1(p1);
cout<<"after call freePtr1"<<endl;
if(p1!=NULL)
{
cout<<"p1 is not null"<<endl;
cout<<"p1="<<(p1)<<endl;
}
cout<<"---------------------------------------"<<endl;
intp2=newint;
p2=2;
cout<<"p2="<<p2<<endl;
FreePtr2(p2);
cout<<"after call freePtr2"<<endl;
if(p2!=NULL)
{
cout<<"p2="<<p2<<endl;
}
else
{
cout<<"the p2 is null"<<endl;
}
cout<<"---------------------------------------"<<endl;
intp3 ;
p3=newint(3);
cout<<"p3="<<p3<<endl;
FreePtr3(&p3);
cout<<"after call freePtr3"<<endl;
if(p3!=NULL)
{
cout<<"p3="<<p3<<endl;
}
else
{
cout<<"the p3 is null"<<endl;
}
cout<<"---------------------------------------"<<endl;
system("pause");
}
结果:
comments:
对p1指针:
cout<<"---------------------------------------"<<endl;
int p1 = new int;
p1 = 1;
cout<<"p1="<<p1<<endl;
// FreePtr1(p1);
void FreePtr1(int ptr1)
{
delete ptr1;
ptr1 = NULL;
}
cout<<"after call freePtr1"<<endl;
if(p1 != NULL)
{
cout<<"p1 is not null"<<endl;
cout<<"p1="<<(p1)<<endl;
}
cout<<"---------------------------------------"<<endl;
而p2为:
调用前:
调用后:
注意:函数的参数进行值拷贝,即使传的是指针,也的对指针(即指针里存的地址)的拷贝,可不是指针里地址所指的值的拷贝啊!原文链接: https://www.cnblogs.com/lexus/archive/2013/01/22/2870686.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/76369
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!