课程
/后端开发
/C++
/C++远征之离港篇
当数组作为形参时 比如数组名是arr 参数列表里为什么是int *arr 这个* 的作用是什么
int *arr是不是和int arr[]等价 如果不是在参数列表的话 他们两个又有什么异同
2017-07-05
源自:C++远征之离港篇 4-4
正在回答
在参数列表中作为参数用时,在这里他们效果是一样的,都是相当于指针。 注:数组可以看作是常量指针,在声明时便分配内存,数组名就是指向数组第0个元素的指针,不过指向的地址不可变,这样说能明白?
街边七号 提问者
保护我方鲁班七号 回复 街边七号 提问者
街边七号 提问者 回复 保护我方鲁班七号
如果不在参数列表中的话,我以为它们可能是这样的:int *arr为一个int型指针;int arr[]为一个int型一维数组。如果我说的不对请多见谅。
在参数列表中作为参数用时,数组名代表数组元素的首地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组元素的值传递给形参,而只是将实参数组的首地址传递给形参,形参可以是数组名,也可以是指针变量,他们用来接收实参传来的地址,这样,实参数组和形参数组就共占同一段内存单元。因此改变形参数组元素的值将同时改变实参数组的值,这样做排序时,将要排序的数组传递到函数中,主调函数中的数组也已经排好序了。
举报
C++扫清通往面向对象的最后一道障碍,将所有知识点融会贯通
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号