我传递一个数组int
与4个元素到一个函数和sizeof(array)/sizeof(array[0])
说我有更少的元素。诠释int数组通过收缩
这里的例子发生的事情的:
int
main() {
// declaring literal array
int array[] = {1,2,3,5};
// prints 16/4 (correct output for 4 elements)
printf("%d/%d\n", sizeof(array), sizeof(array[0]));
function(array);
return 0;
}
void
function(int array[]) {
// printing 8/4 instead of 16/4
printf("%d/%d\n", sizeof(array), sizeof(array[0]));
}
与所有的编辑,我想知道(一) (*)*原始*问题发生了什么,(b)'matrix_transposition_key'声明在哪里?原来的问题在'function()'的printf中使用'array []',这不会,甚至不会编译。 – WhozCraig 2013-02-23 22:00:15
您不能将数组传递给函数或从函数返回它们;他们降级到指向他们的第一个元素。 – 2013-02-23 22:02:33
对不起,重写了一些代码来泛化和复制/粘贴printf语句。我会编辑修复 – 2013-02-23 22:09:26