c++中指针,指针的引用,指针的指针的区别

c++中指针,指针的引用,指针的指针的区别 - C++ Programmer's Cookbook - C++博客

c++中指针,指针的引用,指针的指针的区别

看例子和结果:



c++中指针,指针的引用,指针的指针的区别#include"stdafx.h"

c++中指针,指针的引用,指针的指针的区别#include
<iostream>

c++中指针,指针的引用,指针的指针的区别
usingnamespacestd;

c++中指针,指针的引用,指针的指针的区别
voidFreePtr1(intptr1)

c++中指针,指针的引用,指针的指针的区别c++中指针,指针的引用,指针的指针的区别
{

c++中指针,指针的引用,指针的指针的区别 delete ptr1;

c++中指针,指针的引用,指针的指针的区别 ptr1
=NULL;

c++中指针,指针的引用,指针的指针的区别}


c++中指针,指针的引用,指针的指针的区别

c++中指针,指针的引用,指针的指针的区别
voidFreePtr2(int
&ptr2)

c++中指针,指针的引用,指针的指针的区别c++中指针,指针的引用,指针的指针的区别
{

c++中指针,指针的引用,指针的指针的区别 delete ptr2;

c++中指针,指针的引用,指针的指针的区别 ptr2
=NULL;

c++中指针,指针的引用,指针的指针的区别}


c++中指针,指针的引用,指针的指针的区别
voidFreePtr3(intptr3)

c++中指针,指针的引用,指针的指针的区别c++中指针,指针的引用,指针的指针的区别
{

c++中指针,指针的引用,指针的指针的区别 delete
ptr3;

c++中指针,指针的引用,指针的指针的区别
ptr3=NULL;

c++中指针,指针的引用,指针的指针的区别}


c++中指针,指针的引用,指针的指针的区别

c++中指针,指针的引用,指针的指针的区别
voidmain()

c++中指针,指针的引用,指针的指针的区别c++中指针,指针的引用,指针的指针的区别
{

c++中指针,指针的引用,指针的指针的区别 cout
<<"---------------------------------------"<<endl;

c++中指针,指针的引用,指针的指针的区别
intp1=newint;

c++中指针,指针的引用,指针的指针的区别
p1=1;

c++中指针,指针的引用,指针的指针的区别 cout
<<"p1="<<p1<<endl;

c++中指针,指针的引用,指针的指针的区别 FreePtr1(p1);

c++中指针,指针的引用,指针的指针的区别 cout
<<"after call freePtr1"<<endl;

c++中指针,指针的引用,指针的指针的区别
if(p1!=NULL)

c++中指针,指针的引用,指针的指针的区别c++中指针,指针的引用,指针的指针的区别
{

c++中指针,指针的引用,指针的指针的区别 cout
<<"p1 is not null"<<endl;

c++中指针,指针的引用,指针的指针的区别 cout
<<"p1="<<(
p1)<<endl;

c++中指针,指针的引用,指针的指针的区别 }


c++中指针,指针的引用,指针的指针的区别 cout
<<"---------------------------------------"<<endl;

c++中指针,指针的引用,指针的指针的区别
intp2=newint;

c++中指针,指针的引用,指针的指针的区别
p2=2;

c++中指针,指针的引用,指针的指针的区别 cout
<<"p2="<<p2<<endl;

c++中指针,指针的引用,指针的指针的区别 FreePtr2(p2);

c++中指针,指针的引用,指针的指针的区别 cout
<<"after call freePtr2"<<endl;

c++中指针,指针的引用,指针的指针的区别
if(p2!=NULL)

c++中指针,指针的引用,指针的指针的区别c++中指针,指针的引用,指针的指针的区别
{

c++中指针,指针的引用,指针的指针的区别 cout
<<"p2="<<
p2<<endl;

c++中指针,指针的引用,指针的指针的区别 }


c++中指针,指针的引用,指针的指针的区别
else

c++中指针,指针的引用,指针的指针的区别c++中指针,指针的引用,指针的指针的区别
{

c++中指针,指针的引用,指针的指针的区别 cout
<<"the p2 is null"<<endl;

c++中指针,指针的引用,指针的指针的区别 }


c++中指针,指针的引用,指针的指针的区别 cout
<<"---------------------------------------"<<endl;

c++中指针,指针的引用,指针的指针的区别
intp3 ;

c++中指针,指针的引用,指针的指针的区别 p3
=newint(3);

c++中指针,指针的引用,指针的指针的区别 cout
<<"
p3="<<p3<<endl;

c++中指针,指针的引用,指针的指针的区别 FreePtr3(
&p3);

c++中指针,指针的引用,指针的指针的区别 cout
<<"after call freePtr3"<<endl;

c++中指针,指针的引用,指针的指针的区别
if(p3!=NULL)

c++中指针,指针的引用,指针的指针的区别c++中指针,指针的引用,指针的指针的区别
{

c++中指针,指针的引用,指针的指针的区别 cout
<<"
p3="<<p3<<endl;

c++中指针,指针的引用,指针的指针的区别 }


c++中指针,指针的引用,指针的指针的区别
else

c++中指针,指针的引用,指针的指针的区别c++中指针,指针的引用,指针的指针的区别
{

c++中指针,指针的引用,指针的指针的区别 cout
<<"the p3 is null"<<endl;

c++中指针,指针的引用,指针的指针的区别 }


c++中指针,指针的引用,指针的指针的区别 cout
<<"---------------------------------------"<<endl;

c++中指针,指针的引用,指针的指针的区别 system(
"pause");

c++中指针,指针的引用,指针的指针的区别

c++中指针,指针的引用,指针的指针的区别}


结果:

o_cpppointer.jpg





comments:



对p1指针:

cout<<"---------------------------------------"<<endl;

int
p1 = new int;

p1 = 1;

cout<<"
p1="<<p1<<endl;

o_p1before.jpg

// FreePtr1(p1);

void FreePtr1(int
ptr1)

{

o_ptr1before.jpg

delete ptr1;

o_ptr1delete.jpg

ptr1 = NULL;

o_ptr1null.jpg

}

o_p1after.jpg

cout<<"after call freePtr1"<<endl;

if(p1 != NULL)

{

cout<<"p1 is not null"<<endl;

cout<<"p1="<<(p1)<<endl;

}

cout<<"---------------------------------------"<<endl;



而p2为:

调用前:

o_p2before.jpg

调用后:

o_p2after.jpg





注意:函数的参数进行值拷贝,即使传的是指针,也的对指针(即指针里存的地址)的拷贝,可不是指针里地址所指的值的拷贝啊!原文链接: https://www.cnblogs.com/lexus/archive/2013/01/22/2870686.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/76369

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午5:29
下一篇 2023年2月9日 下午5:29

相关推荐