指针变量被直接调用
*arr是指针变量,但没说是数组类型的,为什么函数在调用时直接就可以把参数 arr1[] 数组变量 传递过去
*arr是指针变量,但没说是数组类型的,为什么函数在调用时直接就可以把参数 arr1[] 数组变量 传递过去
2015-09-22
getMaxOrMin函数的第一个参数arr是int指针,并不是数组(其实是一样的,见回复的最后一段)。将参数声明为int数组要这样写 int arr[]。 (如果写成 int *arr[] 的话,是声明了一个int指针的数组)
你是不是说:
另有一个数组,假设为 int a[3];
调用函数时是这样传参的: getMaxOrMin(a, ...) ? 为什么声明第一个参数为指针,却传入了一个数组名??
这样传参数是正确的。
如之前所说:数组在作右值时会自动转换为指向其首元素的指针。用数组名传参数就是把数组作为右值,所以函数得到的就是指向数组第一个元素的指针,可以和函数声明匹配上。
还有,在声明函数时,就算将arr参数声明为数组(如写成int arr[]),编译器还是会将其当作指向元素类型的指针。就是说对函数来说,数组参数就等于是指针! 故而,把arr写成数组形式时也无需在[]中写上数组大小,写了也没有作用,就是因为函数会把它当成指针。
举报