#include <iostream> const int MAXSIZE = 10; void arrSetZero(int *arr,int size){ for(int i=0;i<size;i++){ arr[i] = 0; } } void arrDealWithoutNew(int *arr,int size){ for(int i=0;i<size;i++){ arr[i] = 10-i; } } int* arrDealWithNewBase(int *arr,int size){ arr = new int[MAXSIZE]; for(int i=0;i<size;i++){ arr[i] = i; } return arr; } //意图修改地址,用地址的引用 void arrDealWithNewRef(int *&arr,int size){ delete arr; arr = nullptr; arr = new int[MAXSIZE]; for(int i=0;i<size;i++){ arr[i] = i; } } //意图修改地址,用地址的地址(二级指针) void arrDealWithNewPP(int **arr,int size){ delete *arr; *arr = nullptr; *arr = new int[MAXSIZE]; for(int i=0;i<size;i++){ (*arr)[i] = 0; } } void arrShow(int *arr,int size){ for(int i=0;i<size;i++){ std::cout<<arr[i]<<" "; } std::cout<<std::endl; } int main(){ int *arr = new int[MAXSIZE]; std::cout<<"arrSetZero:"<<std::endl; arrSetZero(arr,MAXSIZE); std::cout<<"The addr:\t"<<arr<<std::endl; arrShow(arr,MAXSIZE); std::cout<<"arrDealWithNewBase:"<<std::endl; int *p = arrDealWithNewBase(arr,MAXSIZE); std::cout<<"In Function Addr:"<<p<<std::endl; std::cout<<"The addr:\t"<<arr<<std::endl; arrShow(arr,MAXSIZE); delete p; p = nullptr; std::cout<<"arrDealWithoutNew:"<<std::endl; arrDealWithoutNew(arr,MAXSIZE); std::cout<<"The addr:\t"<<arr<<std::endl; arrShow(arr,MAXSIZE); std::cout<<"arrDealWithNewRef:"<<std::endl; arrDealWithNewRef(arr,MAXSIZE); std::cout<<"The addr:\t"<<arr<<std::endl; arrShow(arr,MAXSIZE); std::cout<<"arrDealWithNewPP:"<<std::endl; arrDealWithNewPP(&arr,MAXSIZE); std::cout<<"The addr:\t"<<arr<<std::endl; arrShow(arr,MAXSIZE); delete arr; arr = nullptr; return 0; }
转载于:https://www.cnblogs.com/jyunlon/p/9491733.html