关于C语言中数组作为参数传递的疑惑~~

intarray[]={1,2,3}voida(intarray[2]){}voidb(intarray[]){}voidc(int(&array)[2]){}以上都是以... int array[]={1,2,3}
void a(int array[2]){}
void b(int array[]){}
void c(int (&array)[2]){}
以上都是以数组作为参数传递给函数a,b,c的。想了解以上三者的区别,希望各位老大详细解释,谢谢~~~
展开
 我来答
cheng_870701
2007-08-17
知道答主
回答量:10
采纳率:0%
帮助的人:0
展开全部
1 a函数调用时将3这个数值传递
2 b函数调用时将数组元素的首地址传递,接下来依次操作
3 c函数调用时将3的地址传递
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kimi870611
2007-08-17
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
我也是几年前学的C!一直不用了!不知道解释的合理不!
首先int array[]={1,2,3}定义了一个数组!数组元素的个数是空的[],系统就根据后面的{1,2,3}将数组大小定义为3个!其实这句语句和int array[2]={1,2,3}是一样的!!
“void a(int array[2]){}”代表array中第3个元素传给a,也就是3
void b(int array[]){} 应该是代表将整个数组传给B
void c(int (&array)[2]){}应该的先做”&array[2〕”的出的结果是0或1,然后在传给C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友492224e
2007-08-18 · TA获得超过203个赞
知道小有建树答主
回答量:323
采纳率:0%
帮助的人:187万
展开全部
int array[]={1,2,3}
void a(int array[2]);
void b(int array[]);
声明必须这样写。
前两个完全一样,还可以写成void d(int const* array);
这也是一样的,数组在c中被作为const pointer传递.
void c(int (&array)[2]);这个有错误,不能这样写。

不想写了,不过如上乱写,还不如不写。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Is_it_right
2007-08-17 · TA获得超过1031个赞
知道小有建树答主
回答量:410
采纳率:0%
帮助的人:416万
展开全部
int array1[]={1,2,3},array2[]={1,2};
void a(int array[2]){}
void b(int array[]){}
void c(int (&array)[2]){}
void d(int *array){}

a,b,d完全等价,因为“作为函数参数的数组名”等同于指针的。
而c函数中,传入的数组的元素个数,必须和函数中定义的一致。也就是说,c(array1);是错的。c(array2);是对的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金色潜鸟
2007-08-17 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5934万
展开全部
void a(int array[2]){}
void b(int array[]){}
void c(int (&array)[2]){}
是原型声明。
你打算怎样调用?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式