乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      C |指針數(shù)組、二級(jí)指針、動(dòng)態(tài)二維數(shù)組及三者的相關(guān)關(guān)系

       zhuxrgf 2021-02-16

      C |指針數(shù)組、二級(jí)指針、動(dòng)態(tài)二維數(shù)組及三者的相關(guān)關(guān)系

      小智雅匯2021-02-16 08:21:53

      超過(guò)一維的n維數(shù)組可以轉(zhuǎn)換為n-1維數(shù)組指針,只是喪失了第一維的長(zhǎng)度信息。聲明與n維數(shù)組等價(jià)的n-1維數(shù)組指針時(shí),只需將第一維改寫(xiě)為指針形式(*)即可。

      一維數(shù)組名可以轉(zhuǎn)換為一級(jí)指針,也是喪失了長(zhǎng)度信息。

      char str[12]; char *sp = str; // 注意符號(hào)“*”與“[]”一定意義上的等價(jià)性 int arr2[3][4]; int (*p2)[4] = arr2; int arr3[3][4][5]; int (*p3)[4][5] = arr3;

      對(duì)于一維數(shù)組,如果其元素是一個(gè)指針呢?如:

      char* str[12];

      等價(jià)的指針形式應(yīng)該怎樣寫(xiě)?

      如前面所述,str對(duì)應(yīng)一級(jí)指針,自然,改寫(xiě)后與二級(jí)指針等價(jià)了,當(dāng)然,長(zhǎng)度信息也沒(méi)有了。

      char **strs = str;

      看如下實(shí)例:

      #include <iostream>
      using namespace std;
      
      void print(char *str, int len)
      {
          for(int i=0;i<len;i  )
              cout<<str[i];
          cout<<endl;
      }
      
      void print2(char **str, int len)
      {
          for(int i=0;i<len;i  )
              cout<<str[i]<<' ';
          cout<<endl;
      } 
      
      int main()
      {
          char alp[12] = 'abcdefghijk';
          print(alp,12);
      
          char* month[12]={'January','February','March',
                            'April','May','June',
                            'July','August','September',
                            'October', 'November','December'};
          print2(month,12);
          while(1);
          return 0;
      }

      我們知道,申請(qǐng)堆內(nèi)存時(shí),返回一個(gè)指針,可以是申請(qǐng)單個(gè)或多個(gè)內(nèi)建數(shù)據(jù)類(lèi)型(Built-in data type)(或結(jié)構(gòu)體)。當(dāng)申請(qǐng)的是多個(gè)內(nèi)建數(shù)據(jù)類(lèi)型(Built-in data type)(或結(jié)構(gòu)體)時(shí),也就是相當(dāng)于建立了一個(gè)動(dòng)態(tài)一維數(shù)組。如果想申請(qǐng)一個(gè)n行m列的動(dòng)態(tài)二維數(shù)組呢?雖然可以將n行m列的動(dòng)態(tài)二維數(shù)組看成一維的n*m個(gè)元素的動(dòng)態(tài)一維數(shù)組,只是處理的邏輯要做一些改變,但有沒(méi)有辦法可以直接申請(qǐng)一個(gè)邏輯上的動(dòng)態(tài)二維數(shù)組呢?答案是先建立一個(gè)動(dòng)態(tài)的一維指針數(shù)組,再循環(huán)將每一個(gè)指針指向一個(gè)動(dòng)態(tài)一維數(shù)組。如前面所述,一維指針數(shù)組邏輯上等價(jià)于一個(gè)二維指針。

      char **pp = new char*[12]; for(int i=0;i<12;i ) pp[i] = new char[10]; // …… for(int j=0;j<12;j ) delete pp[j]; delete pp;

      -End-

      收藏
      舉報(bào)
      0 條評(píng)論

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多