二重指针分配矩阵内存并初始化
来源:互联网 发布:宁波网络机柜回收 编辑:程序博客网 时间:2024/04/30 10:53
首先要明白的是:int **a ; a为(指向int类型的指针)的指针
METHOD 1:
先分配内存malloc
1.如果后面初始化赋值了,后面就不用了
2.如果后面没有赋值,需要memset了
如果说我临时需要一块内存,这块内存用来存储n个int的变量。我就需要使用malloc为pMax分配一块内存。可以这样做:
pMax = malloc(sizeof(int) * n);
if (pMax == NULL) // 错误处理
{ TODO...}
这样我们就为pMax分配了一块内存大小为sizeof(int) *n 字节的内存。这里malloc返回一个指向这块内存的首地址并将它赋给了int型指针变量pMax.
好了,pMax已经可以使用了。我们需要对它进行初始化。这个可以使用memset函数
memset(pMax, 0 , sizeof(int) * n);
//指针在后面进行了初始化
unsigned char **Image_Array=NULL;//声明一个二位指针,指向指针的指针,
unsigned char **Image_Array;
Image_Array=(unsigned char**)malloc(sizeof(unsigned int*)*lHeight);//指针是int*长度
if(Image_Array==NULL)
{
exit(-2);
}
for(int m=0;m<lHeight;m++)
{
Image_Array[m]=(unsigned char*)malloc(sizeof(unsigned char)*lWidth);
if(Image_Array[m]==NULL)
{
exit(-3);
}
}
for(int j=0; j<lHeight; j++)
{
lpSRCDIBBits_Pixel=(unsigned char *)lpSRCDIBBits+(j*SrcDIBLineBytes);
for(int i=0; i<lWidth; i++)
{
Image_Array[lHeight-j-1][i] = (unsigned char )(*(lpSRCDIBBits_Pixel++)); //变换灰度
}
}
METHOD2:
使用new
定义一个二维数组
char **array
array = new char *[lHeight]; //已经初始化
for(i=0;i<lHeight;++i)
array[i] = new char[lWidth];
...用的时候可以直接array[i][j]
注意delete
for(i=0;i<x;++i)
delete[] array[i];
delete[] array;
for(int j=0; j<lHeight; j++)
{
lpSRCDIBBits_Pixel=(char *)lpSRCDIBBits+(j*SrcDIBLineBytes);
for(int i=0; i<lWidth; i++)
{
Image_Array[lHeight-j-1][i] = (unsigned char )(*(lpSRCDIBBits_Pixel++)); //变换灰度
}
}
VC调试时遇到的指针信息
0xCDCDCDCD堆上分配的地址,但是没有初始化
0xDDDDDDDD堆上释放的地址。
0xFDFDFDFD堆内存的边界
0xCCCCCCCC栈上分配的内存,但是没有初始化
指针的初始化
初看起来,指针的初始化和赋值好像很混乱,又是*,又是&,时不时又出来一个数组。其实总结起来很简单:int *p;int a=25;int b[10];int *m=&a;int *n=b;int *r=&b[0];指针的定义如上所示,以*打头的变量代表该变量为指针变量。指针初始化时,“=”的右操作数必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是int *p=0;除外,该语句表示指针为空)。此时,*p只是表示定义的是个指针变量,并没有间接取值的意思。
- 二重指针分配矩阵内存并初始化
- 内存。二重指针,指针的高级使用
- 二重指针
- 二重指针
- 二重指针
- 二重指针
- 类中指针成员的内存分配和初始化
- 内存分配与初始化
- 分配内存和初始化
- 二级指针如何分配动态内存并赋值
- 内存分配及指针
- 指针以及内存分配
- 指针与内存分配
- 指针内存分配
- 指针内存分配
- 递归 内存分配 指针
- 指针以及内存分配
- 指针与内存分配
- httpd ???
- 用SDK实现属于自己的网盘
- [技术讨论]一些人做分析模型时序图时常见的几个问题
- Linux一句话精彩问答
- decompile-java
- 二重指针分配矩阵内存并初始化
- 数据库的水平划分和垂直划分
- Socket中的Bind方法
- RelativeLayout代码布局
- ucGUI窗口创建例子
- C#中List的排序(Sort)
- 公共建筑能耗监测管理信息平台
- JAVA泛型随笔
- vs2008打开工程报错解决方法