App函数中参数使用指针引用参数的情况(运行正常)
App函数中参数去掉&的情况(运行不正常)
为什么会出现这个问题呢?
不太明白App函数中使用指针引用参数和不使用引用参数的区别。不使用指针引用参数时,主函数传给App的不是一个指针吗,对pa进行赋值不就是给ary进行赋值吗?
App函数中参数使用指针引用参数的情况(运行正常)
App函数中参数去掉&的情况(运行不正常)
因为你在子函数中new了一个指针,这个new的指针和你传的main中的指针不一样,所以你如果不用 & 将新指针内容返回,它是不能返回到main中的:
void wrongptrvalue(int *array,int num)
{
array=new int[num];
cout<<"array ptr :"<<array<<endl;
for(int id=0;id!=num;id++)
{
*(array+id)=id+3;
cout<<"in wrongptrvalue:"<<*(array+id)<<" ";
}
cout<<endl;
}
int main()
{
const int num=3;
int *arrayreal=(int*)malloc(num*sizeof(int));
memset(arrayreal,0,num*sizeof(int));
cout<<"real array ptr :"<<arrayreal<<endl;
changeptrvalue(arrayreal,num);
for(int id=0;id!=num;id++)
{
cout<<*(arrayreal+id)<<" ";
}
cout<<endl;
wrongptrvalue(arrayreal,num);
cout<<"after wrongptrvalue :"<<arrayreal<<endl;
for(int id=0;id!=num;id++)
{
cout<<*(arrayreal+id)<<" ";
}
cout<<endl;
return 0;
}