C++ 高维指针数组 与 高维数组指针(一)
2015-04-11 21:34
316 查看
【摘要】
本文介绍高维数组与数组指针的预备知识,讲述如何初始化二维数组,高维数组,如何初始化二维数组指针,高维数组指针。文末给出采用指向指针的指针的方法,动态初始化,一维数组,二维数组,高维数组的源码。
【正文】
1. 高维数组的初始化
分行赋值
int a[2][4] = {{1,2,3,4},{6,7,8,9} };
单行赋值
int a[2][4] = {1,2,3,4,6,7,8,9};
部分赋值
int a[2][4] = {{1},{6}};
省略赋值
int a[][2][4] = {{1,2,3,4},{6,7,8,9}};
2. 数组的动态内存分配与销毁
动态分配一维数组
#include <iostream>
int main()
{
int *ptr=new int [10];
for(int i=0;i<10;i++)
{
ptr[i]=i;
std::cout<<ptr[i]<<'\n';
}
return 0;
}
动态分配二维数组
#include <iostream>
int main()
{
int **ptr = new int *[10];
for(int i = 1; i <= 10 ; i++)
{
ptr[i] = new int[3];
for ( int j = 1; j <= 3 ; j++)
{
ptr[i][j] = 10*i+j;
std::cout<<ptr[i][j]<<'\n';
}
}
return 0;
}
动态分配高维数组
#include <iostream>
int main()
{
int ***ptr = new int **[10];
for(int i = 1; i <= 10 ; i++)
{
ptr[i] = new int*[3];
for ( int j = 1; j <= 3 ; j++)
{
ptr[i][j] = new int[5];
for( int k = 1; k<= 5 ; k++)
{
ptr[i][j][k] = 100*i+10*j+k;
if (ptr[i][j][k]<1000)
std::cout<<0<<ptr[i][j][k]<<'\n';
else
std::cout<<ptr[i][j][k]<<'\n';
}
}
}
return 0;
}
delete用法
1> int *a = new int;
delete a; //释放单个int的空间
2>int *a = new int[5];
delete [] a; //释放int数组空间
3. malloc/free 用例
1>开辟单个数据单元空间
int * a = (int*)malloc(sizeof(int));
2>开辟数组数据单元空间
int * a = (int*)malloc(num*sizeof(int));
3>不论数组数据还是单元数据,free函数使用方式都是一样的
free(a);
4. 重点理解分析指向指针的指针以及三级指针
int **ptr = new int *[10];
int*[10] 表示10个指针,元素构成的数组;
int ***ptr = new int **[10];
[b]int
**[10]表示10个指向指针的指针,元素构成的数组;
[/b]
本文介绍高维数组与数组指针的预备知识,讲述如何初始化二维数组,高维数组,如何初始化二维数组指针,高维数组指针。文末给出采用指向指针的指针的方法,动态初始化,一维数组,二维数组,高维数组的源码。
【正文】
1. 高维数组的初始化
分行赋值
int a[2][4] = {{1,2,3,4},{6,7,8,9} };
单行赋值
int a[2][4] = {1,2,3,4,6,7,8,9};
部分赋值
int a[2][4] = {{1},{6}};
省略赋值
int a[][2][4] = {{1,2,3,4},{6,7,8,9}};
2. 数组的动态内存分配与销毁
动态分配一维数组
#include <iostream>
int main()
{
int *ptr=new int [10];
for(int i=0;i<10;i++)
{
ptr[i]=i;
std::cout<<ptr[i]<<'\n';
}
return 0;
}
动态分配二维数组
#include <iostream>
int main()
{
int **ptr = new int *[10];
for(int i = 1; i <= 10 ; i++)
{
ptr[i] = new int[3];
for ( int j = 1; j <= 3 ; j++)
{
ptr[i][j] = 10*i+j;
std::cout<<ptr[i][j]<<'\n';
}
}
return 0;
}
动态分配高维数组
#include <iostream>
int main()
{
int ***ptr = new int **[10];
for(int i = 1; i <= 10 ; i++)
{
ptr[i] = new int*[3];
for ( int j = 1; j <= 3 ; j++)
{
ptr[i][j] = new int[5];
for( int k = 1; k<= 5 ; k++)
{
ptr[i][j][k] = 100*i+10*j+k;
if (ptr[i][j][k]<1000)
std::cout<<0<<ptr[i][j][k]<<'\n';
else
std::cout<<ptr[i][j][k]<<'\n';
}
}
}
return 0;
}
delete用法
1> int *a = new int;
delete a; //释放单个int的空间
2>int *a = new int[5];
delete [] a; //释放int数组空间
3. malloc/free 用例
1>开辟单个数据单元空间
int * a = (int*)malloc(sizeof(int));
2>开辟数组数据单元空间
int * a = (int*)malloc(num*sizeof(int));
3>不论数组数据还是单元数据,free函数使用方式都是一样的
free(a);
4. 重点理解分析指向指针的指针以及三级指针
int **ptr = new int *[10];
int*[10] 表示10个指针,元素构成的数组;
int ***ptr = new int **[10];
[b]int
**[10]表示10个指向指针的指针,元素构成的数组;
[/b]
相关文章推荐
- [C++ 学习] C++ Primer 习题 4.36 指针数组 & 数组指针
- C++指针数组,数组指针
- C++中的指针、数组指针与指针数组、函数指针与指针函数
- C++中的指针、数组指针与指针数组、函数指针与指针函数
- 彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系
- C++基础之指针数组和数组指针(重点是后面的名词)
- C++基础---指针数组与数组指针
- 指针数组、数组指针、函数指针、指针函数总结C++
- C++ 指针数组,数组指针,以及函数指针,以及堆中的分配规则
- c++指向数组的指针,数组指针
- C++中new和delete在数组指针和指针数组中的调用
- C++ 数组指针与指针数组
- C++ 高维指针数组 与 高维数组指针(二)
- Thinking in C++: 指针数组与数组指针
- 彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系
- [c/c++]指针数组 pk 数组指针
- C++中int *p[4]和 int (*q)[4]的区别 (指针数组和数组指针)
- C++指针数组、数组指针、函数指针
- C++中的指针、数组指针与指针数组、函数指针与指针函数
- C,C++ 指针数组与数组指针