我有类似这段代码的东西,如果有办法的话,我想知道如何获取传入的数组元素的数量

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;
}
  1. main 签名必须是 int main(void)
  2. sizeof return 类型 size_t 所以使用该类型作为变量。
  3. 您的 main 代码中有错字:myfunc 应该是 myFunc