程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 指針與引用比較

指針與引用比較

編輯:關於C語言

使用引用reference)和指針都可間接訪問另一個值,但它們之間有兩個重要區別。

1、引用總是指向某個對象:定義引用時沒有初始化是錯誤的。

2、賦值行為的差異:給引用賦值修改的是該引用所關聯的對象的值,而並不是使引用與另一個對象關聯。引用一經初始化,就始終指向同一個特定對象這就是為什麼引用必須在定義時初始化的原因)。

下面舉例說明這兩點差別:

例1:

#include <iostream>
using namespace std;
void main() {
    int ival = 1024, ival2 = 2048;
    int *pi = &ival, *pi2 = &ival2;
    pi = pi2;
    cout<<ival<<" "<<ival2<<endl;
    cout<<pi<<" "<<pi2<<endl;
}

賦值結束後,pi 所指向的ival對象值為1024保持不變,賦值操作修改了 pi 指針的值,使其指向另一個不同的對象,pi和pi2指向的地址是一樣的!

例2:

#include <iostream>
using namespace std;
void main() {
    int ival = 1024, ival2 = 2048;
    int &ri = ival, &ri2 = ival2;
    ri = ri2; // assigns ival2 to ival
    cout<<ival<<" "<<ival2<<endl;
    cout<<&ri<<" "<<&ri2<<endl;
}

這個賦值操作修改了 ri 引用的值ival對象,而並非引用本身。賦值後,ival的值和ival2的一樣,都是2048,但是這兩個引用還是分別指向原來關聯的對象ri和ri2地址不同),此時這兩個對象的值相等。


本文出自 “我的學習筆記” 博客,請務必保留此出處http://6924918.blog.51cto.com/6914918/1270676

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved