为了账号安全,请及时绑定邮箱和手机立即绑定

数组·名的区别

replaceMax(arr1,arr2[0]); 

repiaceMax(arr1,arr2)

这两个区别谁能具体说一下

正在回答

2 回答

数组名用作右值时,会自动转换成指向数组首元素的指针。

故 arr1 实际上是将 arr1[0] 的地址(&arr1[0])传入函数,而 arr2[0] 就是将arr2数组的第一个元素(就是一个int)传入函数。

而且,声明在函数参数列表中的数组,会被视为指向数组元素类型的指针,也就是说:

void replaceMax(int arr[], int value);
// 相当于
void replaceMax(int *arr, int value); // 和你上面的第一个函数相匹配

你下面那个函数声明相当于两个参数都是int指针。

1 回复 有任何疑惑可以回复我~
#1

无独有偶yj

数组和指针的差别在哪里?怎么是可以互换的?
2015-12-08 回复 有任何疑惑可以回复我~
#2

onemoo 回复 无独有偶yj

指针变量就是一个变量,一般占用一个int大小的内存空间。 数组则占用一串连续的内存空间。 共同点: 1. 上面提到的:也就是数组名用作右值使用时,会自动转换成指向数组首元素的指针。 2. 可以对指针使用下标操作符,就好象当指针是个数组一般。 如p是个指针,则 p[0] 和 *p 是一个意思。
2015-12-08 回复 有任何疑惑可以回复我~

arr2[0]是将arr2数组中第一个数当做参数放入replaxMax中使用。

arr2是将arr2整个数组当做参数放入replaxMax中使用。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926259    人
  • 解答问题       20798    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

数组·名的区别

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信