<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【小白學(xué)習(xí)C++ 教程】七、在C++指針聲明和指針相關(guān)概念

          共 4144字,需瀏覽 9分鐘

           ·

          2021-06-10 00:07

          @Author:Runsen

          C++ 指針學(xué)習(xí)起來有點(diǎn)難,但是很重要。一些 C++ 程序使用指針更容易執(zhí)行,另外其他 C++ 程序,例如動(dòng)態(tài)內(nèi)存分配,沒有指針就無法執(zhí)行。

          每個(gè)變量都是一個(gè)內(nèi)存位置,每個(gè)內(nèi)存位置都定義了其地址,可以使用與號(hào)(&)運(yùn)算符訪問該地址,該運(yùn)算符表示內(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;

          }

          輸出如下

          Address of var1 variable: 0x61fe1c
          Address of var2 variable: 0x61fe12

          指針聲明

          在編程語言中,指針是一個(gè)變量,其值是另一個(gè)變量的地址。與任何變量或常量一樣,您必須先聲明一個(gè)指針,然后才能使用它。

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

          type *var-name;

          這里,type是指針的類型;它必須是有效的 C++ 類型,并且var-name是指針變量的名稱。

          用于聲明指針的星號(hào)與用于乘法的星號(hào)相同。但是,在此語句中,星號(hào)用于將變量指定為指針。

          下面是有效的指針聲明

          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è)長的十六進(jìn)制數(shù),代表同一個(gè)內(nèi)存地址。

          不同數(shù)據(jù)類型的指針之間的唯一區(qū)別是指針指向的變量或常量的數(shù)據(jù)類型

          C++ 使用指針

          象征名稱描述
          &(與號(hào))地址運(yùn)算符確定變量的地址。
          ?(星號(hào))間接運(yùn)算符訪問地址的值。
          #include <iostream>
          using namespace std;

          int main(){
              int var = 5;
              int *ip;
              ip = &var;
              cout << "變量Var的值:"  << endl;
              cout << var << endl;
              cout << "變量Var的中存儲(chǔ)的地址ip:" << endl
              cout << ip << endl;
              cout << "訪問指針中可用地址處的值:";
              cout << *ip << endl;
          }

          具體輸出如下

          變量Var的值:
          5
          變量Var的中存儲(chǔ)的地址ip:
          0x61fe14
          訪問指針中可用地址處的值:5

          請注意,0x0相當(dāng)于0. 它只是 的十六進(jìn)制表示0。

          指針的概念

          指針有很多但很簡單的概念,它們對 C++ 編程非常重要。以下是 C++ 程序員應(yīng)該清楚的幾個(gè)重要的指針概念 -

          指針說明
          空指針C++ 支持空指針,它是在幾個(gè)標(biāo)準(zhǔn)庫中定義的零值常量。
          指針?biāo)阈g(shù)有四種算術(shù)運(yùn)算符可用于指針:++、--、+、-
          指針與數(shù)組指針和數(shù)組之間有著密切的關(guān)系。
          指針數(shù)組您可以定義數(shù)組來保存多個(gè)指針。
          指向指針的指針C++ 允許您在指針上使用指針等等。
          將指針傳遞給函數(shù)通過引用或通過地址傳遞參數(shù)都允許被調(diào)用函數(shù)在調(diào)用函數(shù)中更改傳遞的參數(shù)。
          從函數(shù)返回指針C++ 允許函數(shù)返回指向局部變量、靜態(tài)變量和動(dòng)態(tài)分配的內(nèi)存的指針。

          空指針

          如果沒有要分配的確切地址,將指針 NULL 分配給指針變量。分配為 NULL 的指針稱為空指針。

          #include <iostream>

          using namespace std;
          int main () {
             int  *ptr = NULL;
             cout << "The value of ptr is " << ptr ;
           }

          當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果 -

          The value of ptr is 0

          在大多數(shù)操作系統(tǒng)上,不允許程序訪問地址 0 處的內(nèi)存,因?yàn)樵搩?nèi)存是由操作系統(tǒng)保留的。空指針:指針變量指向內(nèi)存中編號(hào)為0的空間

          要檢查空指針,您可以使用 if 語句如下 -

          if(ptr)     // succeeds if p is not null
          if(!ptr)    // succeeds if p is null

          指針?biāo)阈g(shù)

          指針是一個(gè)地址,它也是一個(gè)數(shù)值;因此,可以像對數(shù)值一樣對指針執(zhí)行算術(shù)運(yùn)算。有四種算術(shù)運(yùn)算符可用于指針:++、--、+-

          “指針++”和“指針--”表示指針?biāo)傅刂返南乱粋€(gè)或前一個(gè)數(shù)據(jù)的地址。

          #include <iostream>
          using namespace std;
          int main()
          {
           int a[5];
           int i;
           int *p;
           for(i=0; i<5; i++)
            cin>>a[i];
           cout<<endl;
           for(i=0; i<5; i++)
            cout<<a[i]<<"  ";//使用數(shù)組名和下標(biāo)訪問的方式訪問數(shù)組進(jìn)行輸出
           for(i=0; i<5; i++)
            cout<<*(a+i)<<"  ";//使用數(shù)組名和指針運(yùn)算訪問的方式進(jìn)行輸出
           for(p=a; p<(a+5); p++)
            cout<<*p<<"  ";//使用指針變量訪問的方式進(jìn)行輸出
           return 0;
          }

          運(yùn)行結(jié)果

          1
          2
          3
          4
          5

          1  2  3  4  5  1  2  3  4  5  1  2  3  4  5


          瀏覽 62
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  九一香蕉视频在线观看 | 人人澡在线视频 | 天天干天天很天天狠狠 | 夜夜撸av导航 | 九九九视频在线 |