我有类似这段代码的东西,如果有办法的话,我想知道如何获取传入的数组元素的数量
I have something like this code and I would like to know how to get the number of elements of the array I pass in, if there is a way
所以 int size 实际上并没有给我在 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;
}
函数不能神奇地知道,所以它通常是这样解决的:
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;
}
将其作为参数传递给 myFunc。
#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
return 类型 size_t
所以使用该类型作为变量。
- 您的
main
代码中有错字:myfunc
应该是 myFunc
所以 int size 实际上并没有给我在 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;
}
函数不能神奇地知道,所以它通常是这样解决的:
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;
}
将其作为参数传递给 myFunc。
#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
return 类型size_t
所以使用该类型作为变量。- 您的
main
代码中有错字:myfunc
应该是myFunc