引用传值

今天在写数据结构时遇到的一个关于引用类型传参的问题

 

 

我之前认为的引用传值:两个变量指向堆上同一个内存,一个改变另一个也会跟着改变,所以引用类型传值会形参直接改变实参,而上面的代码也很好的验证了我的猜想。但今天将代码改了下发现我之前理解的有问题,上代码

 

 

 可以看到,实参的值并没有改变。之前理解的有问题,引用传值传的引用,不是我之前理解的“指向”。举个例子,实参p的在堆上地址为0x0000,那么形参p在被赋值时也会赋值为0x0000,它们确实指向了同一个值,但是若在方法修改形参p的引用(比如形参p=new People())之类的,那么p里面的引用会改变,比如从0x0000变为0x00002 这样就不会影响实参的值了。

我原来以为C#和C是不一样的 C或C++里面只有值类型所以要加&代表引用类型 但C#里面的引用类型更像是C里面的指针,或者说封装好的指针。所以以后还是要注意这些基础的

 

posted @ 2021-05-08 22:28  这总没有了吧  阅读(40)  评论(0编辑  收藏  举报