C语言中,即使参数声明为数组,它仍然是个指针

转自:《C专家编程》


非参数指针:

int array[10], array2[10];
main(){
  array[1] = 3;
  *array = 3;
  array = array2; /*失败*/
}
指针实参:

fun1(int *ptr){
  ptr[1] = 3;
  *ptr = 3;
  ptr = array2;
}
数组实参:

fun2(int arr[]){
  arr[1] = 3;
  *arr = 3;
  arr = array2;
}

语句array = array2; 将引起一个编译错误,错误信息是“无法修改数组名”。但是,arr = array2却是合法的,因为arr虽然声明为一个数组但实际上仍是一个指针。



你可能感兴趣的:(编程,c,语言,fun)