关闭

C语言--动态分配内存

标签: c语言malloc
45人阅读 评论(0) 收藏 举报
分类:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:726次
    • 积分:40
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档