【发布时间】:2017-01-03 01:36:52
【问题描述】:
我正在浏览寻找一种方法来查找给定矩阵的行数和列数,而无需任何其他信息,我找到了这个答案。
Given a matrix, find number of rows and columns
这是上述问题第二个答案中的代码 sn-p :
int main()
{
float a[9][2]={{0,1},{1,1}};
int row=(sizeof(a)/sizeof(a[0]));
int col=(sizeof(a)/sizeof(a[0][0]))/row;
printf("%d\n",row);
printf("%d\n",col);
return 0;
}
sizeof(a[0]) 怎么变成 8 了?据我了解,指针在 32 位拱形中的通用大小为 4 个字节,在 64 位拱形中具有 8 个字节。我在两台机器上都打印了 sizeof(a[0]) ,答案仍然是 8。 有人知道为什么吗?
已编辑:我的意思是说 a[0] 不会衰减为指针吗?
【问题讨论】:
-
因为
a[0]是矩阵的一行,包含2个浮点数,每个4字节。 -
"在我的理解中指针..." -- 你发布的代码中没有指针。
-
a[0]是一个数组。数组和指针是不同的。该数组有 2 个元素,每个元素的大小为 4,因此总大小为 8。 -
数组不是指针,指针也不是数组。
-
仅仅因为一个数组在几乎所有地方都衰减为一个指针并不意味着它是一个。这只是语言工作方式的一部分。