Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 数组未正确通过_C_Arrays - Fatal编程技术网

C 数组未正确通过

C 数组未正确通过,c,arrays,C,Arrays,我试图发送给被调用函数的数组未正确发送。假设我在数组“a”中插入了五个元素,我使用函数insert传递数组,并使用下面代码的最后两行检查数组的大小,它显示的比数组的实际大小小一行。为什么会发生这种情况 void main() { //rest of the code insert(a,key); //user-defined function } void insert(int a[],int key) { int *p=a; int n = si

我试图发送给被调用函数的数组未正确发送。假设我在数组“a”中插入了五个元素,我使用函数insert传递数组,并使用下面代码的最后两行检查数组的大小,它显示的比数组的实际大小小一行。为什么会发生这种情况

void main()
{
    //rest of the code     
    insert(a,key);   //user-defined function
}

void insert(int a[],int key)
{
    int *p=a;
    int n = sizeof(a);
    printf("No. of elements entered:%d\n",n);
}
sizeof(a)
只是给你一个指针的大小,以字节为单位(显然是你机器上的4个字节)。一旦数组被传递给函数,就无法确定数组的大小,因为数组作为函数参数传递时会衰减为指针。您应该将数组的大小作为单独的参数传递,例如

void insert(int a[], int n, int key)
{
    printf("No. of elements entered: %d\n", n);
}

int main()
{
    int a[5];

    insert(a, 5, key);
}