重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
目录
成都创新互联10多年成都定制网站服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都定制网站及推广,对成都水处理设备等多个方面拥有多年的网站设计经验的网站建设公司。用动态内存开辟矩阵
矩阵初始化
动态内存更多的知识在这篇博客,本文将介绍用malloc开辟矩阵。
malloc是C语言中用来动态开辟内存的,通过malloc函数可以向计算机申请一串连续的内存空间。
因为malloc开辟的内存在堆上,不会随函数的声明周期结束而销毁,因此当该内存不再使用时,需要用free进行内存释放。
malloc和free使用的基本方式:
malloc开辟二维矩阵的示例:
以函数的形式表达:输入row行,col列,开辟矩阵并返回指针
double** Make_Matrix(int row,int col)
{
int i, j;
double** arr = (double**)malloc(sizeof(double*) * row);
if (arr != NULL)
{
for (i = 0; i< row; i++)
{
arr[i] = (double*)malloc(sizeof(double) * col);
}
}
return arr;
}
以上代码可以这样理解:
开辟完矩阵后,还不能立即进行计算,还需要对矩阵进行初始化。
矩阵初始化矩阵的初始化一般指的是将矩阵全部初始化为0,可以使用内存函数memset。memset只适合矩阵的清零操作,为矩阵每个元素赋值需要for循环遍历。
memset
memset这个函数通常为新申请的内存做初始化工作,作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
void * memset ( void * ptr, int value, size_t num );
void Init_Matrix(double**arr)
{
int i;
int row= (int)_msize(arr) / (int)sizeof(double*);
for (i = 0; i< row; i++)
{
memset((arr[i]), 0, _msize(*arr));
}
}
上述代码中:
传统遍历法
void Init_Matrix(double** arr)
{
int i, j;
int row = (int)_msize(arr) / (int)sizeof(double*);
int col = (int)_msize(*arr) / (int)sizeof(double);
for (i = 0; i< row; i++)
{
for (j = 0; j< col; j++)
{
arr[i][j] = 0;
}
}
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧