c++中指针,指针的引用,指针的指针的区别
看例子和结果:

C++ 中指针,指针的引用,指针的指针的区别#include "stdafx.h"
C++ 中指针,指针的引用,指针的指针的区别#include <iostream>
C++ 中指针,指针的引用,指针的指针的区别using namespace std;
C++ 中指针,指针的引用,指针的指针的区别void FreePtr1(int* ptr1)
C++ 中指针,指针的引用,指针的指针的区别{
C++ 中指针,指针的引用,指针的指针的区别    delete ptr1; 
C++ 中指针,指针的引用,指针的指针的区别    ptr1 = NULL;
C++ 中指针,指针的引用,指针的指针的区别}

C++ 中指针,指针的引用,指针的指针的区别
C++ 中指针,指针的引用,指针的指针的区别void FreePtr2(int*& ptr2)
C++ 中指针,指针的引用,指针的指针的区别{
C++ 中指针,指针的引用,指针的指针的区别    delete ptr2; 
C++ 中指针,指针的引用,指针的指针的区别    ptr2 = NULL;
C++ 中指针,指针的引用,指针的指针的区别}
 
C++ 中指针,指针的引用,指针的指针的区别void FreePtr3(int **ptr3)
C++ 中指针,指针的引用,指针的指针的区别{
C++ 中指针,指针的引用,指针的指针的区别    delete *ptr3;
C++ 中指针,指针的引用,指针的指针的区别    *ptr3 = NULL;
C++ 中指针,指针的引用,指针的指针的区别}

C++ 中指针,指针的引用,指针的指针的区别
C++ 中指针,指针的引用,指针的指针的区别void main()
C++ 中指针,指针的引用,指针的指针的区别{
C++ 中指针,指针的引用,指针的指针的区别    cout<<"---------------------------------------"<<endl;
C++ 中指针,指针的引用,指针的指针的区别    int *p1 = new int;
C++ 中指针,指针的引用,指针的指针的区别    *p1 = 1;
C++ 中指针,指针的引用,指针的指针的区别    cout<<"*p1="<<*p1<<endl;
C++ 中指针,指针的引用,指针的指针的区别    FreePtr1(p1);
C++ 中指针,指针的引用,指针的指针的区别    cout<<"after call freePtr1"<<endl;
C++ 中指针,指针的引用,指针的指针的区别    if(p1 != NULL)
C++ 中指针,指针的引用,指针的指针的区别    {
C++ 中指针,指针的引用,指针的指针的区别        cout<<"p1 is not null"<<endl;
C++ 中指针,指针的引用,指针的指针的区别        cout<<"*p1="<<(*p1)<<endl;
C++ 中指针,指针的引用,指针的指针的区别    }

C++ 中指针,指针的引用,指针的指针的区别    cout<<"---------------------------------------"<<endl;
C++ 中指针,指针的引用,指针的指针的区别    int *p2 = new int;
C++ 中指针,指针的引用,指针的指针的区别    *p2 = 2;
C++ 中指针,指针的引用,指针的指针的区别    cout<<"*p2="<<*p2<<endl;
C++ 中指针,指针的引用,指针的指针的区别    FreePtr2(p2);
C++ 中指针,指针的引用,指针的指针的区别    cout<<"after call freePtr2"<<endl;
C++ 中指针,指针的引用,指针的指针的区别    if(p2 != NULL)
C++ 中指针,指针的引用,指针的指针的区别    {       
C++ 中指针,指针的引用,指针的指针的区别        cout<<"*p2="<<*p2<<endl;
C++ 中指针,指针的引用,指针的指针的区别    }

C++ 中指针,指针的引用,指针的指针的区别    else
C++ 中指针,指针的引用,指针的指针的区别    {
C++ 中指针,指针的引用,指针的指针的区别        cout<<"the p2 is null"<<endl;
C++ 中指针,指针的引用,指针的指针的区别    }

C++ 中指针,指针的引用,指针的指针的区别    cout<<"---------------------------------------"<<endl;
C++ 中指针,指针的引用,指针的指针的区别    int *p3 ;
C++ 中指针,指针的引用,指针的指针的区别    p3 = new int(3);
C++ 中指针,指针的引用,指针的指针的区别    cout<<"*p3="<<*p3<<endl;
C++ 中指针,指针的引用,指针的指针的区别    FreePtr3(&p3);
C++ 中指针,指针的引用,指针的指针的区别    cout<<"after call freePtr3"<<endl;
C++ 中指针,指针的引用,指针的指针的区别    if(p3 != NULL)
C++ 中指针,指针的引用,指针的指针的区别    {       
C++ 中指针,指针的引用,指针的指针的区别        cout<<"*p3="<<*p3<<endl;
C++ 中指针,指针的引用,指针的指针的区别    }

C++ 中指针,指针的引用,指针的指针的区别    else
C++ 中指针,指针的引用,指针的指针的区别    {
C++ 中指针,指针的引用,指针的指针的区别        cout<<"the p3 is null"<<endl;
C++ 中指针,指针的引用,指针的指针的区别    }

C++ 中指针,指针的引用,指针的指针的区别    cout<<"---------------------------------------"<<endl;
C++ 中指针,指针的引用,指针的指针的区别    system("pause");
C++ 中指针,指针的引用,指针的指针的区别
C++ 中指针,指针的引用,指针的指针的区别}

结果:
C++ 中指针,指针的引用,指针的指针的区别


comments:

对p1指针:
cout<<"---------------------------------------"<<endl;
 int *p1 = new int;
 *p1 = 1;
 cout<<"*p1="<<*p1<<endl;
C++ 中指针,指针的引用,指针的指针的区别
// FreePtr1(p1);
void FreePtr1(int* ptr1)
{
C++ 中指针,指针的引用,指针的指针的区别
 delete ptr1; 
C++ 中指针,指针的引用,指针的指针的区别
 ptr1 = NULL;
C++ 中指针,指针的引用,指针的指针的区别
}
C++ 中指针,指针的引用,指针的指针的区别
 cout<<"after call freePtr1"<<endl;
 if(p1 != NULL)
 {
  cout<<"p1 is not null"<<endl;
  cout<<"*p1="<<(*p1)<<endl;
 }
 cout<<"---------------------------------------"<<endl;

而p2为:
调用前:
C++ 中指针,指针的引用,指针的指针的区别
调用后:
C++ 中指针,指针的引用,指针的指针的区别


注意:函数的参数进行值拷贝,即使传的是指针,也的对指针(即指针里存的地址)的拷贝可不是指针里地址所指的值的拷贝啊!
 
原文地址


本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2011/11/19/2255173.html,如需转载请自行联系原作者

相关文章:

  • 2022-12-23
  • 2022-02-15
  • 2021-08-04
  • 2022-02-14
  • 2021-06-27
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-10-31
  • 2021-06-26
  • 2022-12-23
  • 2021-10-14
相关资源
相似解决方案