为什么addarray方法中输出array和main中输出不一致

img


main方法中传入array不是地址吗
传入地址进行地址传递 在addarray中array不是指向了扩容后的数组吗 那么调用addarray后在main中输出array不应该是新的数组吗 为什么还是原来的数组呢

因为你新建了一个addarray ,插入操作在其中完成
而虽然你在程序里最后指向了array
但是这不会反馈到主程序

就好比
void a(int x)
{ x=123;
}
main()
{
x =1;
a(x);
}
这不会影响调用者

给你的建议就是,用 return 将 addarray 返回主程序。

说明函数传递数组过程中,是进行了数组的复制,所以函数内的array和main中的array是两个array,只是数据复制了一份。函数内修改的只是函数内的array

addarray 函数里面,array=addarray 这一步已经改变了它的地址,那么此时形参和实参已经毫无关系了