程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++中的指針與引用詳細解讀(1)

C++中的指針與引用詳細解讀(1)

編輯:C++入門知識

C++中的指針與引用詳細解讀(1)


1、指針和引用的定義

在深入介紹之前我們首先來看一下指針和引用的定義、指針和引用的區別,然後分別針對指針和引用展開討論,深入細節為何有這些差異。

  • 指針的權威定義:

In a declaration T D where D has the form * cv-qualifier-seqopt D1 And the type of the identifier in the declaration T D1 is “derived-declarator-type-list T”, then the type of the identifier of D is “derived-declarator-type-list cv-qualifier-seq pointer to T”. The cv-qualifiers apply to the pointer and not to the object pointer to.

——摘自《ANSI C++ Standard》

注:可能有些讀者並不明白cv-qualifier-seq

CV-qualifiers(CV限定符)

CV-qualifiers有三種:const-qualifier(const限定符)、Volatile-qualifier(volatile限定符)、以及const-volatile-qualifier(const-volatile限定符)。

const類對象的非靜態、非mutable、以及非引用數據成員是const-qualified;

volatile類對象的非靜態、非引用數據成員是volatile-qualified;

const-volatile類對象的非靜態、非引用數據成員是const-volatile-qualified。

當CV-qualifiers用於限定數組類型時,實際上是數組成員被該CV-qualifiers限定,而非該數組類型。

復合類型並不因其成員被CV-qualifier限定而被該CV-qualifier限定,也就是說,即使復合類型的成員有CV-qualifier限定,該復合類型也不是CV-qualified對象。

  • 引用的權威定義:

In a declaration T D where D has the form& D1 And the type of the identifier in the declaration T D1 is “derived-declarator-type-list T”, then the type of the identifier of D is “derived-declarator-type-list cv-qualifier-seq reference to T”. Cv-qualified references are ill-formed except when the cv-qualifiers are introduced through the use of a typedef or a template type argument, in which case the cv-qualifiers are ignored.

——摘自《ANSI C++ Standard》

上面這些定義初看有些難懂,如果是這樣的話,那說明你對C++還不夠熟悉,你還有很長的路要走。下面用通俗易懂的話來概述一下:

  • 指針-對於一個類型T,T*就是指向T的指針類型,也即一個T*類型的變量能夠保存一個T對象的地址,而類型T是可以加一些限定詞的,如const、volatile等等。見下圖,所示指針的含義:

C++中的指針與引用詳細解讀

  • 引用-引用是一個對象的別名,主要用於函數參數和返回值類型,符號X&表示X類型的引用。見下圖,所示引用的含義:

C++中的指針與引用詳細解讀




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