日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

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

 zhuxrgf 2021-02-16

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

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

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

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

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

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

char* str[12];

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

如前面所述,str對應(yīng)一級指針,自然,改寫后與二級指針等價了,當(dāng)然,長度信息也沒有了。

char **strs = str;

看如下實例:

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

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

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-

收藏
舉報
0 條評論

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多