在C中修改函数中的数组

use*_*772 2 c

#include <stdio.h>
#include <stdlib.h>

void array_tester(int *array);

int main(int argc,char *argv[])
{   
    int test[] = {1,1,1,1};
    int print;
    for(print = 0; print < sizeof(test) / sizeof(int); print++)
    {
        printf("%d\n",test[print] );
    }

    array_tester(test);
    for(print = 0;print < sizeof(test)/sizeof(int);print++)
    {
        printf("%d\n",test[print] );
    }

    return EXIT_SUCCESS;
}


void array_tester(int array[])
{   
    int i ;
    for(i = 0; i < sizeof(array) / sizeof(int); i++)
    {
        array[i] = i;
    } 
}
Run Code Online (Sandbox Code Playgroud)

问题是我想修改array_tester函数中的数组但我无法这样做.我在里面用sizeof()什么?

thi*_*his 5

您必须手动传递有关数组大小的信息.

void array_tester( int* array , int size ) ;
Run Code Online (Sandbox Code Playgroud)

然后叫它:

array_tester( test , sizeof(test)/sizeof(*test) ) ;
Run Code Online (Sandbox Code Playgroud)

这背后的原因是传递给函数的数组将衰减为指针,并且sizeof将返回指针的大小而不是原始数组.