动态分配内存和释放
int* a = (int *)malloc(number * sizeof(int)); free(a);
向malloc申请空间的大小是以字节为单位的,返回的结果是void *,要转化为需要的类型
指针表示数组
以二维数组为例
/* 以二重指针创建二维数组 */
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(void)
{
int ** p=(int **)malloc(2*sizeof(int *)); //声明一个二重指针且分配2个int类型指针大小的空间
p[0]=(int *)malloc(3*sizeof(int *));//声明指针数组中第一个指针并且分配3个int类型大小的空间
p[1]=(int *)malloc(3*sizeof(int *));//声明指针数组中第二个指针并且分配3个int类型大小的空间
for(int i;i<2;i++)
{
for(int j=0;j<3;j++)
{
p[i][j]=(i+1)*(j+1);
cout<<p[i][j]<<"\t";
}
cout<<endl;
}
return 0;
}
/* 以二维数组为二重指针赋值 */
/* one way */
int i[2][3]={{1,2,3},{4,5,6}};
int *p[2]={i[0],i[1]};
cout<<p[1][2];
/* or */
int i[2][3]={{1,2,3},{4,5,6}};
int (*p)[3]=i;
cout<<p[1][2];
/* but cannot */
int i[2][3]={{1,2,3},{4,5,6}};
int **p=i;