当数组作为函数参数时,并不是复制整个数组作为参数,而是以指针的方式指向数组,即: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;
}