?? arraymalloc.h
字號:
////ArrayMalloc.h//多維數組的動態開辟和刪除。
#include <malloc.h>
//////C////
//1D
float* MallocFloat1( int n)
{float * p;
p=(float*)malloc(n*sizeof(float));
return p;
}
void FreeFloat1(float *p)
{
free(p);
return;
}
///2D 一次性開辟所有空間
float ** MallocFloat2(int Rows,int Cols)
{
int i;
float **p;
p=(float**)malloc(Rows*sizeof(float*));
for(i=0;i<Rows;i++)
{
p[i]=(float*)malloc(Cols*sizeof(float));
}
return p;
}
void FreeFloat2(float**p,int Rows,int Cols)
{ int i;
for(i=0;i<Rows;i++)
{
free( p[i]);
}
free(p);
return;
}
//2D 一次性開辟所有的行,每一行對應的列動態分配
//這樣可以重新動態分配二維數組的大小。
float **MallocFloat2Row(int Rows)
{
float **p;
p=(float**)malloc(Rows*sizeof(float*));
return p;
}
void MallocFloat2Col(float ** p,int Rows,int Cols)
{
int i;
for(i=0;i<Rows;i++)
{
p[i]=(float*)malloc(Cols*sizeof(float));
}
return;
}
void MallocFloat2RowIndex(float **p,int RowsIndex,int Cols)
{
p[RowsIndex]=(float*)malloc(Cols*sizeof(float));
return;
}
float ** MallocFloat2Whole(int Rows,int Cols,int TotalRows)
{//動態分配二維數組大小時,一般是 1,先把行數分配的足夠大,2,列數大小以后改變
int i;
float **p;
p=(float**)malloc(TotalRows*sizeof(float*));
for(i=0;i<Rows;i++)
{
p[i]=(float*)malloc(Cols*sizeof(float));
}
return p;
}
///////
void reMallocFloat1(float *p,int n)
{
p=(float*)realloc(p,n*sizeof(float));
return;
}
void reMallocFloat2Col(float **p,int Rows,int Cols)
{///重新動態分配二維數組的列。行數必須和原來數組的函數相同
//只有列數可以重新分配大小。
//如果行數重新分配。在釋放內存是出錯,不知道什么原因
int i;
//p=(float**)realloc(p,Rows*sizeof(float*));
for(i=0;i<Rows;i++)
{
p[i]=(float*)realloc(p[i],Cols*sizeof(float));
}
}
////C++////還不夠完善
/*
void MallocFloat1( float * p,int n)
{
p=new float[n];
return;
}
void FreeFloat1(float *p)
{
delete [] p;
return;
}
void MallocFloat2(float **p,int Rows,int Cols)
{
int i;
p=new float*[Rows];
for(i=0;i<Rows;i++)
{
p[i]=new float*[Cols];
}
return;
}
void FreeFloat2(float**p,int Rows,int Cols)
{ int i;
for(i=0;i<Rows;i++)
{
delete[] p[i];
}
delete p;
return;
}
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -