关于C++数组在函数中传递的几个问题
如果有数组inta[],且一个函数的声明为voidswap(int*a),那么这个型参传递的是数组的什么内容,如果函数的声明为voidswap(inta[])和voids...
如果有数组int a[],且一个函数的声明为 void swap(int *a), 那么这个型参传递的是数组的什么内容, 如果函数的声明为 void swap(int a[]) 和 void swap (*a),分别传递的是什么内容?
展开
1个回答
展开全部
int a[] 和 int *a :
在做函数形参时,无区别,并且 int a[] 为“活化石”写法(即不推荐写法,因为 int a[]不能显式的表示出我们要传递的是一个指针),但是有些程序员认为 int a[] 更好,因为 *a 不能表示出函数所需要的对象是数组还是一个单对象的指针。所以,仁者见仁,我个人更推崇int *a。
总结:
这两种写法都表示我们要传递一个指针,在函数内部可以对a赋其他值。(在用作数组变量时,数组名只能做“指针常量”,但做数组型形式参数时,两者相同)
在做函数形参时,无区别,并且 int a[] 为“活化石”写法(即不推荐写法,因为 int a[]不能显式的表示出我们要传递的是一个指针),但是有些程序员认为 int a[] 更好,因为 *a 不能表示出函数所需要的对象是数组还是一个单对象的指针。所以,仁者见仁,我个人更推崇int *a。
总结:
这两种写法都表示我们要传递一个指针,在函数内部可以对a赋其他值。(在用作数组变量时,数组名只能做“指针常量”,但做数组型形式参数时,两者相同)
追问
谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询