指针与引用区别

知识问答 2025-09-03 02:40:26 来源:互联网

指针和引用是C++中两种不同的数据类型,它们都可以用来直接操作内存中的数据,尽管它们的功能相似,但它们在语法、使用方式以及对内存的处理上存在一些关键区别。

我们来看指针,指针是一个变量,它存储了另一个变量的内存地址,这意味着你可以改变指针所指向的值,或者改变指针本身的值。 python int a = 10 ; int *p = &a ; // p 是 a 的地址 print (p) # 输出: <memory at 0x7f6b8c2d3a90> print (*p) # 输出: 10 print (*p) # 输出: 10 *p = 20 print (a) # 输出: 20 在这个例子中,我们创建了一个名为a的int变量,并创建了一个名为p的指针来存储a的地址,然后我们修改了*p(即a的值),并且也改变了p本身的值,我们打印出了a的新值(现在为20)。 注意,你不能改变指针本身的值,只能改变它所指向的值,这是因为指针存储的是内存地址,而内存地址是固定的。

我们讨论引用,引用是一种别名,它是另一个变量的另一种表示方式,引用必须在声明时初始化,并且一旦初始化后,其值就不能改变。 python int a = 10 ; int &r = a ; print (r) # 输出: 10 print (r) # 输出: 10 r = 20 print (a) # 输出: 20 在上面的例子中,我们创建了一个名为r的引用,它是a的别名,我们可以改变r的值(将r设置为20),但是不能改变a的值(a仍然是10),这就是为什么在打印r的时候输出的是新的值(20),而在打印a的时候输出的是原来的值(10)。