`
finux
  • 浏览: 202218 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C语言中用malloc动态申请二维空间

    博客分类:
  • C
阅读更多

首先,我们来说说以下表达式的区别

int p1[][13];
int (*p2)[13];
int *p3[13];

p1与p2其实是同一个意思,都是一个指针,表明它们是指向具有13个整型元素的一维数组。
p3则可以这样来理解

typedef int* PTR;
PTR p3[13];

这样来写的话,也许会比较容易理解。p3表示声明了一个数组,该数组有13个元素,其实每个元素都是指向整形对象的指针。

好了,下面我们来看看如何用malloc动态申请二维空

#include <stdlib.h>

#define M 10
#define N 20

int main(int argc, char *argv[]) {
    int **p;
    int i;    
    
    //申请空间
    p = (int**)malloc(sizeof(int*)*M);
    for (i=0; i<M; i++)
        p[i] = (int*)malloc(sizeof(int)*N);
    
    //释放空间
    for (i=0; i<M; i++)
        free(p[i]);
    free(p);
}
 
分享到:
评论

相关推荐

    基于栈的C语言迷宫问题与实现.docx

    //生成二维动态数组 srand(time(NULL)); x1=(int*)malloc(max*sizeof(int)); ...//省略其他代码 本文对基于栈的C语言迷宫问题进行了详细的分析和实现,提供了迷宫问题的解决思路、栈的C语言实现、迷宫的生成、...

    基于C语言实现点餐系统

    3. **数组与多维数组**:系统中用一维数组如`char a[6][20]`存储菜单项,二维数组如`int x[5][3]`记录每类菜品的点餐数量,以及二维数组`int price[5][3]`和`int price1[5][3]`存储菜品单价和总价。 4. **循环结构*...

    C语言坦克源码

    7. **数组与指针**:数组用于存储固定数量的数据,比如游戏地图可以表示为二维数组,而指针则用于高效地处理数组和结构体,实现数据的传递和修改。 8. **文件操作**:在C语言中,文件操作通过fopen, fread, fwrite,...

    C语言基础知识汇总.zip

    一维数组、二维数组和多维数组都是C语言中的常见数据结构。 7. **指针**:C语言的指针是其强大之处,它可以指向变量的地址,实现动态内存管理、高效的数据操作和复杂的数据结构。理解指针的概念、声明、赋值、解...

    《你必须知道的495个C语言问题》

    2.4 在C语言中用什么方法实现抽象数据类型最好? 22 *2.5 在C语言中是否有模拟继承等面向对象程序设计特性的好方法? 22 2.6 为什么声明extern f(struct x *p); 给我报了一个晦涩难懂的警告信息? 23 2.7 我...

    基于栈的C语言迷宫问题与实现

    //生成二维动态数组 srand(time(NULL)); x1=(int*)malloc(max*sizeof(int)); ... } ``` 本文档提供了基于栈的C语言迷宫问题与实现的详细信息,包括迷宫问题的描述、算法基本思想、程序具体部分的说明和程序源...

    你必须知道的495个C语言问题

    2.4 在C语言中用什么方法实现抽象数据类型最好? *2.5 在C语言中是否有模拟继承等面向对象程序设计特性的好方法? 2.6 为什么声明externf(structx*p);给我报了一个晦涩难懂的警告信息? 2.7 我遇到这样声明...

    浙江省计算机二级考试(C语言)模拟考试题.pdf

    7. 内存管理:在使用结构体之前,文档中用到了动态内存分配(malloc函数),这是在C语言中进行内存管理的重要部分。 8. 数组和矩阵操作:文档中有数组的操作,以及使用二维数组来模拟矩阵,并进行相关的数据操作。 ...

    C语言入门程序设计资源

    - 一维数组、二维数组和多维数组是常见的数组形式。 5. **指针**: - 指针是C语言的特色之一,它存储内存地址,可以用来间接访问和修改变量。 - 指针运算包括取地址(&)、解引用(*)以及指针的加减运算。 - ...

    华为C语言试题及参考答案

    1. **数组初始化**:在定义数组时可以同时初始化其元素,如上例中,二维数组`a`的行被初始化为`{1}`和`{2,3}`。 2. **数组元素访问**:通过索引访问数组元素,如`a[0][1]`表示访问第一行第二列的元素,值为0(因为第...

    C语言FAQ 常见问题列表

    o 7.15 当我向一个接受指针的指针的函数传入二维数组的时候, 编译器报错了。 o 7.16 我怎样编写接受编译时宽度未知的二维数组的函数 ? o 7.17 我怎样在函数参数传递时混用静态和动态多维数组 ? o 7.18 当数组...

    C语言课件-前十二章-超全

    7. **指针**:指针的定义、操作,理解指针与地址的关系,以及指针作为函数参数的应用,如动态内存分配(malloc、calloc、realloc、free)。 8. **结构体与联合体**:自定义数据类型,结构体内存对齐,结构体数组和...

    你必须知道的495个C语言问题(PDF)

    难道在C语言中一个结构不能包含指向自己的指针吗? . . . . 3 1.7 怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返 回指向字符的指针的函数的指针的数组? . . . . . . . . . . . . . . 3 1.8 函数只定义...

    C语言小系统作业程序设计语言.pdf

    10. 内存分配与释放:文档中用到了`malloc`函数进行内存分配,这是动态内存管理的关键。同时,在代码片段中未看到`free`函数的调用,这是在实际编程中应注意内存泄露的问题。 11. 字符串处理:文档中包含对字符串的...

    The C programming Language[C程序设计语言中英文版]PDF

    学习如何操作数组,特别是二维数组,以及处理字符串函数(如strlen、strcpy、strcat、strcmp)是必要的。 6. 结构体与联合:结构体允许将不同类型的数据组合成一个单一的结构,而联合则是在同一内存位置上可以表示...

    C代码实例:字符串处理

    1. **文件读取**: 使用 `fgets` 逐行读取文件中的字符串,并存储在动态分配的二维字符数组 `str` 中。 2. **字符串排序**: 通过自定义的 `range` 函数对字符串数组进行排序,确保字符串按照字典序排列。 3. **文件...

    课程设计实验——八皇后_VC++游戏

     * 程序中用八进制数用一个一维数组 data[] 表示  *  * 检测冲突:  * 横列冲突:data == data[j]  * 斜列冲突:(data+i) == (data[j]+j) 或者 (data-i) == (data[j]-j)  *  * 好处:  * 采用循环,而不是递...

Global site tag (gtag.js) - Google Analytics