因此int大小实际上并没有给出我在main函数中传入的大小。如何获取传入的数组中的确切元素数。
void myFunc(int *array)
{ int size = (sizeof(&array)/sizeof(int));}
int main()
{
int array[]={1,2,3,4,5,6,7,8,9,10,11,12,13};
myfunc(&array);
return 0;
}
答案 0 :(得分:2)
将其作为参数传递给myFunc。
testingMethod.class.getResourceAsStream("testingMethod.class")
#include <stdio.h>
void myFunc(int *array, size_t size)
{
printf("Size = %zu\n", size);
for (size_t i=0; i<size; i++)
{
printf("array[%zu] = %d\n", i, array[i]);
}
}
int main(void)
{
int array[]={1,2,3,4,5,6,7,8,9,10,11,12,13};
myFunc(array, sizeof(array)/sizeof(array[0]));
return 0;
}
签名必须为main
int main(void)
返回类型sizeof
,因此请将此类型用于变量。size_t
:main
应为myfunc
答案 1 :(得分:1)
这个功能无法神奇地知道,所以它通常会解决这个问题:
void myFunc(int *array, int size)
{
int i;
for(i=0;i<size;++i)
array[i] = i;
}
#define ARRSZ(arr) arr, sizeof(arr)/sizeof(*arr)
int main()
{
int array[] = {1,2,3,4,5,6,7,8,9,10,11,12,13};
myFunc( ARRSZ(array) );
return 0;
}