我有类似这样的代码,我想知道如何获取我传入的数组元素的数量,如果有一种方法

时间:2016-10-24 12:29:37

标签: c pointers sizeof

因此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;
}

2 个答案:

答案 0 :(得分:2)

将其作为参数传递给myFunc。

testingMethod.class.getResourceAsStream("testingMethod.class")
  1. #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
  2. int main(void)返回类型sizeof,因此请将此类型用于变量。
  3. 您的代码中有一个拼写错误size_tmain应为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;
}