指針和引用是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)。
發表評論