1.C语言中动态分配内存一般来说使用malloc函数,该函数包含在头文件 <stdlib.h>中,函数返回一个(void* )类型的指针,即从堆中申请到的空间的地址。
例如:
int* p=NULL;
p=(int* )malloc(sizeof(int)*10);
即给指针p分配了40个字节大小的空间,可以把这个分配的空间当做数组处理,即p指向一个10个int型变量组成的数组的首地址。
2.如何动态分配内存空间使之达到类似二维数组的效果呢?
如下:
#include <stdio.h>
#include <stdlib.h>
int
main()
{
int
**a;
int
i, j;
a = (
int
**)
malloc
(
sizeof
(
int
*)*3);
//为二维数组分配3行
for
(i = 0; i < 3; ++i)
{
//为每列分配4个大小空间
a[i] = (
int
*)
malloc
(
sizeof
(
int
)*4);
}
//初始化
for
(i = 0; i < 3; ++i)
{
for
(j = 0; j < 4; ++j)
{
a[i][j] = i+j;
}
}
//输出测试
for
(i = 0; i < 3; ++i)
{
for
(j = 0; j < 4; ++j)
{
printf
(
"%d "
, a[i][j]);
}
printf
(
"\n"
);
}
//释放动态开辟的空间
for
(i = 0; i < 3; ++i){
free
(a[i]);
}
free
(a);
return
0;
}
3.类似的方法,可分配动态的三维、四维等等。。。。。