溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

c++二維指針,數(shù)組指針和指針數(shù)組實(shí)例分析

發(fā)布時(shí)間:2022-03-22 15:10:48 來(lái)源:億速云 閱讀:141 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹了c++二維指針,數(shù)組指針和指針數(shù)組實(shí)例分析的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇c++二維指針,數(shù)組指針和指針數(shù)組實(shí)例分析文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

1、c++

c/c++的重要性毋庸置疑,凡是對(duì)性能要求很高的系統(tǒng)和算法,其中核心代碼都會(huì)考慮用c++編寫(xiě)。當(dāng)我們拿tensorflow框架跑一遍,發(fā)現(xiàn)時(shí)間效率不能滿(mǎn)足我們的要求時(shí),往往核心邏輯就會(huì)考慮用c++定制改寫(xiě)。

c++的精華無(wú)疑是指針,指針的靈活,創(chuàng)建和銷(xiāo)毀完全靠我們掌控。用到指針,一般都會(huì)用到二維指針或數(shù)組指針,下面總結(jié)下它們的某些應(yīng)用場(chǎng)景。

2、二維指針

二維指針:指針變量指向的是指針,如:

char **pa;

常用二維指針的場(chǎng)合是第一維和第二維元素個(gè)數(shù)都不確定的情況下,或者個(gè)數(shù)是動(dòng)態(tài)變化的場(chǎng)合。

二維指針如何申請(qǐng)堆地址?

一般,先對(duì)第一維申請(qǐng)m個(gè):

pa = new char* [m];

然后再對(duì)第二維,依次申請(qǐng)n個(gè):

for(int i=0; i<m; i++){

    pa[i] = new char[n];

}

這樣就申請(qǐng)了一個(gè)m行n列的二維動(dòng)態(tài)數(shù)組。

如何釋放呢?

與申請(qǐng)順序相反:

for(int i=0; i<m; i++){

    delete[] pa[i];

}

最后釋放pa:

delete[] pa;

3、數(shù)組指針

數(shù)組指針,是指向數(shù)組的指針,如:

char (*pa)[2];

這種結(jié)構(gòu)在什么時(shí)候用呢? 和二維指針相比,它有一個(gè)維度的個(gè)數(shù)必須是確定的,此處等于2,它創(chuàng)建如下:

pa = new char[m][2];

釋放:

delete [] pa;

4、指針數(shù)組

指針數(shù)組是數(shù)組,里面的元素是指針。

  1. int *p[3];  

  2. p[0] = new int[4];  

  3. p[1] = new int[5];  

  4. p[2] = new int[6];  

  5.   

  6. delete p[0];  

  7. delete p[1];  

  8. delete p[2]; 

可以看到每一個(gè)元素儲(chǔ)存的元素個(gè)數(shù)都是可以不同的,分別釋放。

關(guān)于“c++二維指針,數(shù)組指針和指針數(shù)組實(shí)例分析”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“c++二維指針,數(shù)組指針和指針數(shù)組實(shí)例分析”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI