C语言--动态分配内存

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.类似的方法,可分配动态的三维、四维等等。。。。。

阅读更多
文章标签: c语言 malloc
个人分类: C语言
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭