C语言中动态数组的使用与调试

由于项目使用的matlab程序自身有一定缺陷,最近在软件仿真中放弃了matlab的软件仿真,使用c版本进行替换。

在c版本的程序中,与matlab中最大的不同就是 矩阵的定义 ,由于c中没有矩阵这种类型的变量,所以矩阵的定义就显得尤为复杂,原来matlab中一句简单的zeros(n,m)就需要由特别复杂的 动态数组 来描述。

在c语言中动态数组的定义使用 malloc函数 来进行描述,malloc的使用首先需要在一开始要包含相关的头文件: malloc.h ,但是由于malloc.h被更常用的 stdlib.h 包含,所以一般多使用

#include <stdblib.h>
  • 一维动态数组中malloc一般使用为:
int x,y;
int *pa;
double *pb;
pa = (int *)malloc(sizeof(int)*x);//申请动态地址
pb = (double *)malloc(sizeof(double)*y);
//其他类型同理

并在使用后使用free进行空间释放

free(pa);
  • 二维动态数组需要使用循环对每一行进行地址申请,并在使用结束后使用循环对每一个元素进行释放
int **p;   
int i;       
int M,N;      
//申请空间   
p = (int**)malloc(sizeof(int*)*M);   
for (i=0; i<M; i++)   
   p[i] = (int*)malloc(sizeof(int)*N);