指針

2018-08-12 22:03 更新

指針

C++ 指針學起來非常容易和有趣。一些 C++ 的任務用指針執(zhí)行非常容易,諸如動態(tài)分配內(nèi)存的 C++ 工作,如果沒有指針將無法執(zhí)行。

如你所知,每個變量有一個內(nèi)存位置,每個內(nèi)存位置都有它的地址定義,這個地址定義可以使用表示內(nèi)存中地址的和運算符 (&) 進行訪問。下面我們將打印定義的變量的地址:

    #include <iostream>

    using namespace std;

    int main ()
    {
       int  var1;
       char var2[10];

       cout << "Address of var1 variable: ";
       cout << &var1 << endl;

       cout << "Address of var2 variable: ";
       cout << &var2 << endl;

       return 0;
    }

當上述代碼被編譯執(zhí)行時,它將產(chǎn)生如下結果:

    Address of var1 variable: 0xbfebd5c0
    Address of var2 variable: 0xbfebd5b6

指針是什么?

指針是一個變量,它的值是另一個變量的地址。像任何變量或常量一樣,你必須在使用它之前聲明一個指針。

指針變量聲明的一般形式為:

    type *var-name;

在這里,type 是指針的基類型;它必須是一個有效的 C++ 類型,var-name 是指針變量的名稱。用來聲明一個指針的星號與你用于乘法的星號是一樣的。然而,在這個語句中,這個星號用來指定一個變量作為一個指針。以下是有效的指針聲明:

    int*ip;// pointer to an integer
    double *dp;// pointer to a double
    float  *fp;// pointer to a float
    char   *ch // pointer to character

所有指針的值的實際的數(shù)據(jù)類型,或者是整數(shù),浮點數(shù),字符或者是其他,同樣的一個長十六進制數(shù)表示一個內(nèi)存地址。不同的數(shù)據(jù)類型的指針之間的唯一區(qū)別在于指針指向的變量或常量的數(shù)據(jù)類型。

在 C++ 中使用指針

這里有幾個我們將非常頻繁的使用指針的重要的操作。

(a) 我們定義一個指針變量;

(b) 將一個變量的地址分配給指針;

(c) 最后使用在指針變量中的地址來訪問這個值。

這是通過使用一元運算符 * 完成的,返回位于通過運算符指定地址的變量的值。以下示例使用這些操作:

    #include <iostream>

    using namespace std;

    int main ()
    {
       int  var = 20;   // actual variable declaration.
       int  *ip;// pointer variable 

       ip = &var;   // store address of var in pointer variable

       cout << "Value of var variable: ";
       cout << var << endl;

       // print the address stored in ip pointer variable
       cout << "Address stored in ip variable: ";
       cout << ip << endl;

       // access the value at the address available in pointer
       cout << "Value of *ip variable: ";
       cout << *ip << endl;

       return 0;
    }

當上述代碼被編譯執(zhí)行時,它將產(chǎn)生如下結果:

    Value of var variable: 20
    Address stored in ip variable: 0xbfc601ac
    Value of *ip variable: 20

詳細的 C++ 指針

指針有很多但是很容易的概念,它們對 C++ 的編程非常重要。這里有一些 C++ 程序員應該必須清楚的重要的指針概念:

概念 描述
C++ 空指針 C++ 支持空指針,它是在幾個標準庫中被定義值為零的一個常量。
C++ 指針算法 這里有四種可用于指針的算術運算符:++,--,+,-
C++ 指針與數(shù)組 指針與數(shù)組之間有著密切的關系。讓我們看一看?
C++ 指針數(shù)組 你可以定義保存大量指針的數(shù)組。
C++ 指針的指針 C++ 允許您有指針的指針,等等。
將指針傳遞給函數(shù) 通過引用或通過地址傳遞參數(shù),兩種方法都可以使被調(diào)用的函數(shù)在調(diào)用函數(shù)中傳遞的參數(shù)發(fā)生更改。
從函數(shù)返回指針 C++ 允許函數(shù)返回一個指向本地變量的指針,同樣也允許返回指向靜態(tài)變量和動態(tài)分配內(nèi)存的指針。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號