当数组作为函数参数时,并不是复制整个数组作为参数,而是以指针的方式指向数组,即:void Fun(int a[]);等同于void Fun(int* A);

  例如:


    int ArraysAsFun(int A[]){
        int i;
        int sum = 0;
        int size = sizeof(A)/sizeif(A[0]); // 此处sizeof(A)因为是指针,所以值为4,所以size的值为1
        return size;
    }
    int main(){
        int A[] = {1,2,3,4,5};
        int size = sizeof(A)/sizeif(A[0]); // 此处sizeof(A)为数组,所以值为4*5=20,所以size的值为5
        return 0;
    }
								

  再例如:


    void Double(int A[], int size){ // 此处int A[]相当于int* A
        int i;
        int sum = 0;
        for(i = 0; i < size; i++){
            A[i] = 2 * A[i];
        }
    }
    int main(){
        int A[] = {1,2,3,4,5};
        int size = sizeof(A)/sizeif(A[0]); 
        int i;
        Double(A, size); // 此处因为A为指针,故数组内各元素均乘以2
        for(i = 0; i < size; i++){
            printf(" %d", A[i]);  // 输出结果为 2 4 6 8 10
        }
        return 0;
    }