C语言——判断矩阵维数(sizeof、_msize)

C语言中可以利用二维数组或者malloc开辟矩阵,本章将分别介绍这两种方法是如何判断矩阵维数的。

判断矩阵维数

sizeof

以二维数组创建矩阵时,可以利用sizeof判断内存的大小

例如:

  • double arr[3][4] = { 0 };
    int col = (int)sizeof(*arr)/(int)sizeof(**arr);//先判断列数
    int row = (int)sizeof(arr)/col/ (int)sizeof(**arr);//通过列数判断行数

 上述代码中:

  • sizeof(*arr)求出一行中有多少个字节,sizeof(**arr)求出第一行第一个元素所占字节大小,前者除以后者得出列数col
  • sizeof(arr)求出整个二维数组的占多少个字节,除以列数得出一列元素的总字节数,再除以每个元素所占字节大小得出行数
  • 因为sizeof的返回值是无符号整型,在做计算前最好将其转换成整型

_msize 

sizeof(指针)并不会求出指针指向内存的大小,只会根据系统的不同返回4或者8个字节

接下来介绍_msize:

  • size_t   _msize( void * memblock);
  • void*表示可以传入任意类型的指针
  • _msize会返回在堆中分配的存储块的大小,返回值为无符号整型,单位为字节
  • 需要包含头文件<malloc.h>

例如:

double** arr = (double**)malloc(sizeof(double*) * 3);//开辟行
if (arr == NULL)exit(-1);
for (i = 0; i < n; i++)
{
	arr[i] = (double*)malloc(sizeof(double) * 4);//开辟列
}
int row = (int)_msize(arr) / (int)sizeof(double*);
int col = (int)_msize(*arr) / (int)sizeof(double);

上述代码中,创建了3行4列的矩阵:

  • _msize(arr):计算arr指向内存的大小;创建矩阵时arr中的每个元素为double*类型,除以double*得到矩阵的行数
  • _msize(*arr):计算arr中第一行内存的大小;除以doiuble类型得到矩阵的列数

利用内存的大小除以每个元素的大小来判断元素个数是非常实用的方法!

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是元笙阿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值