建设网站怎样提要求,百度人气榜,wordpress搜索框制作教程,网站建设工作文章目录一、堆区开辟数组1. 数组指针与指针数组的区别2. 1维数组3. 2维数组二、二级指针一、堆区开辟数组
1. 数组指针与指针数组的区别
数组指针是指指向数组的指针#xff0c;它的本体是一个指针, 声明指针变量的时候一般用括号#xff0c;因为括号的优先级高于[]#…
文章目录一、堆区开辟数组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 };
#includeiostream
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;//每次循环数组的值加1p[]表示值不是指针}//调用一维数组for (int i 0; i 100; i) {cout p[i] endl;}//用完记得删除delete[]p;return 0;
}3. 2维数组
方法一
#includeiostream
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表示指针首元素的地址所以*(pi-1)表示指针地址加了4*(i-1)*3(*pj-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方法二
#includeiostream
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