C++總結筆記(十)——堆區內存開辟數組和二級指針

文章目錄

  • 一、堆區開辟數組
    • 1. 數組指針與指針數組的區別
    • 2. 1維數組
    • 3. 2維數組
  • 二、二級指針


一、堆區開辟數組

1. 數組指針與指針數組的區別

數組指針是指指向數組的指針,它的本體是一個指針, 聲明指針變量的時候一般用括號,因為括號的優先級高于[],這樣在編譯的時候就知道這是聲明一個數組的指針

int (*p)[5];

指針數組是指數組由指針組成的數組,下面表示由5個指針變量組成了一個名為p的一維數組。

int *p[5];

2. 1維數組

1維數組的聲明方式很多,可以概括為4種方式
1:類名* 指針 = new 類名[Size];
2:類名* 指針 = new 類名[Size] ();
3:類名* 指針 = new 類名[2]{ N1,N2};
4:類名* 指針 = new 類名[2]{ N };

#include<iostream>
using namespace std;int main()
{int* const p = new int[100];//在堆中開辟100個內存空間cout << p << endl;for (int i = 0; i < 100; i++){p[i] = i + 1;//每次循環數組的值加1,p[]表示值,不是指針}//調用一維數組for (int i = 0; i < 100; i++) {cout << p[i] << endl;}//用完記得刪除delete[]p;return 0;
}

3. 2維數組

方法一:

#include<iostream>
using namespace std;int main()
{//二維數組的格式為類名+(指針變量)[列數]。 int(*p)[3] = new int[3][3]{ {1,2,3},{4,5,6},{7,8,9} };int i, j;//輸入行列值cout << "輸入行號:"; cin >> i;cout << "輸入列號:";cin >> j;//p表示指針首元素的地址,所以*(p+i-1)表示指針地址加了4*(i-1)*3,(*p+j-1)表示指針地址加了4*(j-1)cout << p << endl;cout << p[0] << endl;//1行1列元素的地址cout << (*(p + 1 - 1)) << endl;//1行1列元素的地址cout << (*(p + 1 - 1)+1) << endl;//1行2列元素的地址cout << (*(p + 2 - 1)) << endl;//二行一列元素的地址cout << *(*(p + i - 1) +j- 1) << endl;cout << p[i-1][j-1] << endl;//直接訪問
}
輸入行號:1
輸入列號:1
0109E048
0109E048
0109E048
0109E04C
0109E054
1
1

方法二:

#include<iostream>
using namespace std;int main()
{int row;cin >> row;int col;cin >> col;int** arr = new int* [row];//二級指針指向row行數組指針的地址for (int i = 0; i < row; ++i){arr[i] = new int[col]();//為每一行分配地址,內存空間的長度為col*4}for (int i = 0; i < row; ++i){for (int j = 0; j < col; ++j)//為數組填充元素{arr[i][j]++;cout << arr[i][j]<<endl;}}//釋放空間for (int i = 0; i < row; ++i){delete[col]arr[i];//先釋放二維數組中每個元素指向的數組arr[i] = NULL;}delete[row]arr;//在釋放該指針數組}
3
3
1
1
1
1
1
1
1
1
1

二、二級指針

	int a = 10; int* p = &a;int** p1 = &p;//a的指針的指針cout << p << endl;cout << *p1 << endl;cout << p1 << endl;cout << **p1 << endl;
0097FB0C
0097FB0C
0097FB00
10

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256120.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256120.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256120.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

阿里巴巴將赴NIPS 2017 3大事業部聯袂展示AI全技能

被譽為國際頂級的機器學習和神經網絡學術會議NIPS 2017將于12月4日-9日在美國加州長灘市舉行。在本屆會議上&#xff0c;阿里巴巴除有兩篇論文入選Workshop并進行Oral和Poster形式報告外&#xff0c;3大技術事業部將連續3天&#xff08;5日-7日&#xff09;在阿里展區舉行多場技…

【圖像處理】——Python實現圖像特征提取BP神經網絡實現圖像二分類

目錄 一、圖像特征提取 二、BP實現圖像二分類 1、輸入層、隱層、輸出層結點個數設置

mysql sql語句大全

1、新建用戶&#xff1a;>CREATE USER name IDENTIFIED BY ssapdrow; 2、更改密碼&#xff1a; >SET PASSWORD FOR namePASSWORD(fdddfd); 3、權限管理 >SHOW GRANTS FOR name; //查看name用戶權限 >GRANT SELECT ON db_name.* TO name;    //給name用戶db_…

C++總結筆記(十一)—— Lambda表達式的應用

文章目錄一、Lambda表達式是什么&#xff1f;二、程序示例1. 在STL中的使用一、Lambda表達式是什么&#xff1f; Lambda表達式時C11引入的語法&#xff0c;本質上是一個匿名函數&#xff0c;用[ ] () {}三個符號組成表達式。 格式為&#xff1a;[capture list] (params list) …

【文件處理】——字典寫入json文件或TXT文件,讀取文件中的字典TypeError: Object of type ‘ndarray‘ is not JSON serializable錯誤解決方法

目錄 一、將字典寫入json文件 二、json文件中讀取字典 三、將字典寫入TXT文件中 四、從TXT中讀取字典 五、解決字典含數組存入json文件失敗的方法 1、存入前將數組變成列表 2、擴展類方法 一、將字典寫入json文件 import jsontest_dict {version: "1.0",exp…

js一些實用例子

1.獲取焦點選中文本內容 $("#id").focus(function(){ this.select(); }); 2.表單提交方式 A.自動提交 setTimeout(function(){表單對象.submit();},2000); B.onclick事件提交(鏈接提交) <input type"submit" value"提交" οnclick"retur…

360安全衛士加速球誤關閉某個應用軟件

近期因為工作原因須要使用金山快盤。但因為之前電腦上安裝了360安全衛士&#xff0c;在使用加速球功能的時候&#xff0c;會出現&#xff0c;誤關閉金山快盤的操作&#xff0c;怎么避免呢&#xff1f; 1、打開360主界面。找到安全防護中心&#xff0c;例如以下圖&#xff1a; 2…

C++STL總結筆記(一)—— 容器和容器適配器

文章目錄前言一、概念1.1 順序容器1.2 容器適配器1.3 關聯容器二、程序示例1. vector和Set自定義數據類型的訪問2.vector容器嵌套3.list容器排序4.pair對組的使用總結前言 STL是C中的基于數據結構和算法的標準模板庫&#xff0c;可以大量節約系統開發時間&#xff0c;增加程序…

【圖像處理】——比特平面原理和實現方法(全網較全面,含所有比特位圖的分層方法)

目錄 一、比特平面 1st比特平面:括號里面的為比特值,前面的是原圖像中對應要變為0的像素值

20145238-荊玉茗 《信息安全系統設計基礎》第7周學習總結

20145238 《信息安全系統設計基礎》第7周學習總結 教材學習內容總結 存儲器系統 : 存儲器系統是一個具有不同容量、成本和訪問時間的存儲設備的層次結構。 1、RAM隨機訪問存儲器 分類&#xff1a;SRAM&#xff08;靜態&#xff09;、DRAM&#xff08;動態&#xff09;特點&…

關于兩個jar包中存在包名和類名都完全相同的jar包沖突問題

2019獨角獸企業重金招聘Python工程師標準>>> 最近弄webservice&#xff0c;我使用的jdk自帶的wsimport工具來生成客戶端代碼&#xff0c;發現生成的代碼具有編譯錯誤&#xff0c;錯誤描述如下&#xff1a; The method getPort(QName, Class<T>) in the type S…

限制文本框只能輸入數字和小數點

<input type"text" class"NumText" placeholder"只能輸入數字&#xff08;可含有小數點&#xff09;"/><style> .NumText{width:200px;} .NumText::-webkit-input-placeholder{color:#F1923C;} .NumText:-moz-placeholder{…

C++STL總結筆記(二)——仿函數(函數對象)

文章目錄一、概念總結一、概念 仿函數又稱函數對象&#xff0c;即重載了函數調用運算符&#xff08;&#xff09;的類的對象。 優勢&#xff1a; 1.仿函數對象的內部可以有自己的狀態&#xff0c;可以實現一些其他的功能。 2.函數對象可以作為參數進行傳遞。 當仿函數類內重載…

【圖像處理】——灰度變換心得(cv2.normalize規范化值0-255,cv2.convertScaleAbs(new_img)轉為8位圖)

目錄 一、灰度變換函數 對數變換 加碼變換 常見雷點 常見灰度變換函數

SQL Server2008 表旋轉(pivot)技術

參考資料&#xff1a; http://www.cnblogs.com/xiashengwang/p/3503554.html轉載于:https://www.cnblogs.com/lihuali/p/6014776.html

const和define 區別

1&#xff1a; 編譯器處理不同 define宏是在預處理階段展開&#xff0c;const常量是編譯運行階段使用。 2&#xff1a;類型和安全檢查不同 const常量有數據類型&#xff0c;而宏常量沒有數據類型&#xff0c;僅僅是展開。編譯器可以對前者進行類型安全檢查&#xff0c;而對后者…

學習筆記(三)

一.調試模式 define(APP_DEBUG, true); 調試模式的優勢在于&#xff1a; 開啟日志記錄&#xff0c;任何錯誤信息和調試信息都會詳細記錄&#xff0c;便于調試&#xff1b;  關閉模板緩存&#xff0c;模板修改可以即時生效&#xff1b;  記錄SQL日志&#xff0c;方便分析SQL…

【項目實戰】——Python打包正裝換底色代碼為exe文件(可在其他無Python環境下運行)

目錄 1.安裝pyinstaller 2.生成.exe文件 方法1&#xff1a; 方法2&#xff1a; 方法3&#xff1a; &#xff08;1&#xff09;使用命令行窗口進入項目的根目錄 &#xff08;2&#xff09;在改目錄下執行pyi-makespec main.py&#xff08;main.py是你的主入口文件&#x…

C++STL總結筆記(三)—— 常見算法

文章目錄一、基本概念二、程序示例1.遍歷2. 查找3. 排序、拷貝、替換4. numeric相關算法總結一、基本概念 算法是STL中很重要的一部分&#xff0c;其功能包括比較&#xff0c;查找&#xff0c;排序&#xff0c;交換&#xff0c;遍歷&#xff0c;復制等等。 最大的算法頭文件是…