对我来说,这个概念是相同的,或者至少是相同的,但实际使用的却不是.
当我们谈论指针或参考时,我们正在谈论一个概念.这个变量"指向"或者它是对其他东西的"引用",这些东西存储在其他地方.
如果我使用该引用,例如通过更新值,我实际上更新引用的对象,变量指向的对象.如果我有一个从两个不同位置引用的对象,我实际上是从两个地方更新相同的东西.
因此,这个概念可以与你在现实世界中的地址相关,只是一种引用其他东西的方式,并且可以像许多拥有我地址的人一样共享该引用.
不同之处在于如何使用它以及语言允许的内容.请注意,引用或指针的实现细节不是隐含在概念本身中.在C#中继续如此.
引用是一个引用,因此,将两个引用相加或者将一个引用添加到引用中是没有意义的......这甚至意味着什么?我无法添加两个家庭住址(如Baker Street + Home Street)......
在C++中,引用的实现细节实际上是引用.这样一个指针不仅仅是一个指针,它也是(并用作)一个内存地址.这样,例如,您可以添加指针,因为添加两个内存地址以获取另一个内存地址或添加4到内存地址实际上是有意义的.因此,在C++中,指针停止成为一个概念,成为一个实际实现细节的名称.
这就是为什么在C#中,指针和引用是不同的东西.因为从语义上来说,它们的含义非常相似,所以他们希望区别于旧的C和C++概念,其中指针变得与内存地址相同.
我建议你阅读Eric Lippert的文章" 引用不是地址 " ,我相信他在解释这些差异方面做得很好.