抱歉新手问题,我还在学习。
我们说matrix[x][y]
使用sizeof(matrix)
将返回数组的整个大小。
使用sizeof(matrix[a])
会返回某行的大小。
使用sizeof(matrix[a][b])
将返回[a] [b]中的内容大小。
有没有办法找到一个列的大小?如果没有,为什么?我忽略了什么吗?谢谢你的时间。
编辑:感谢您的帮助,如果其他人正在寻找答案,那么用户" nnn"写了以下内容:
对于列中元素的数量:
sizeof(matrix) / sizeof(matrix[a])
对于列占用的字节大小:
sizeof(matrix) / sizeof(matrix[a]) * sizeof(matrix[a][b])
也是"风向标"解释sizeof的工作原理:
sizeof
找到内存中连续字节使用的范围,所以它 不能直接用于查找每个使用的内存量 柱。数组,行或元素:是的。一栏:没有
答案 0 :(得分:11)
对于列中元素的数量,将矩阵大小除以行大小:
sizeof(matrix) / sizeof(matrix[a])
对于列占用的字节大小(问题的实际答案),将元素数(前一个表达式)乘以元素大小:
sizeof(matrix) / sizeof(matrix[a]) * sizeof(matrix[a][b])
即使使用单个sizeof
运算符无法实现这一点,sizeof
也会在编译时进行评估,通常编译器会将这些算术运算替换为实际结果,所以将不会由此引起运行时性能下降。
此外,上述表达式中a
和b
的使用可以替换为0
,即matrix[0]
和matrix[0][0]
,因为所有元素具有相同的大小。
答案 1 :(得分:0)
这是数学:
columnsize = sizeof(matrix) / sizeof(matrix[a])
答案 2 :(得分:0)
如果要查找列的大小,则必须计算:
(number of rows)*(size of an element)
所以对于matrix [x] [y]你必须写下这个:
int sizeOfArrayColumn = x*sizeof(matrix[0][0]);