c语言数组传参

Hat_trick173 2016-11-13 04:35:13
请教各位前辈:
当数组传参问题中: ①数组名作为实参,那么形参该如何定义,是定义int*p 还是int a[] ?
②数组名作实参, a[10]指的是a偏移10的指针,还是变量a[10] ?
如果可以的话,请多讲一些数组跟形参实参的知识,我想多学些。
好人一生平安~~
...全文
109 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wokaoyan1981 2016-11-13
  • 打赏
  • 举报
回复
数组名作为实参,就是把数组的首元素的地址作为实参传给了函数,实际上它还是一个指针,因此你在定义函数的时候,形参既可以 写成数组形式,也可以写成指针形式; 第二个问题你没有表述清楚啊。a[10]指一个数组或者数组的元素,要看它出现的位置。如果在声明中出现,它就是一个数组,在使用过程中出现,那就是数组中的一个元素。a[10]并不能表示指针。
wokaoyan1981 2016-11-13
  • 打赏
  • 举报
回复
1.如果数组名作为实参,形参应该写成数组形式或指针变量; 例如:aver=average(score); //数组名score作实参 float score[10]; //定义数组 ........ float average(float array[10]); //定义函数,数组作为形参 2.(int *) a[10]是指针,指向包含10个整型元素的一维数组; int *a[10]是数组,包含10个指向整型元素的指针;
paschen 2016-11-13
  • 打赏
  • 举报
回复
a[10] 表示与 *(a+10)等效 也就是数组中第10个元素,但并不一定是偏移10字节大小的位置
paschen 2016-11-13
  • 打赏
  • 举报
回复
int*p 与 int a[] 是一样的,都相当于int*p 因为数组名作为参数或者返回值已经退化为了指针
fefe82 2016-11-13
  • 打赏
  • 举报
回复
(形式)参数定义里,int *p 和 int p[] 是等价的。

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧