指針

2018-08-12 22:03 更新

指針

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

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

    #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;
    }

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

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

指針是什么?

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

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

    type *var-name;

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

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

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

在 C++ 中使用指針

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

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

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

(c) 最后使用在指針變量中的地址來(lái)訪問(wèn)這個(gè)值。

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

    #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;
    }

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

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

詳細(xì)的 C++ 指針

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)