数组是怎么进行参数传递的?

love1314_2004 2009-07-16 02:23:26
数组是怎么进行参数传递的?
...全文
29 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
love1314_2004 2009-07-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ljt3969636 的回复:]
MM还不会结贴吧?要适时结贴地~~
使用数组名字时会自动转化成指向数组第一个元素的指针,所以下面三种形式等价,其参数都是int*
void f(int*)
void f(int[])
void f(int[100])

对于第三种形式int[100]当参数有点注意的事,就是你可能原本想传递100个元素的数组但是很不幸因为其实他是int*类型,编译器无视你的愿望不会去检查你传进来的是不是100个元素,所以有可能在函数内部使用数组下标时越界.
所以用数组做参数要通过…
[/Quote]
哦 是啊 怎么结贴啊????
kakashi0309 2009-07-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ShowMan 的回复:]
数组就是指针,大多数时候可以这么理解。
[/Quote]

这个想法是不对地
jhony_lee 2009-07-16
  • 打赏
  • 举报
回复
当数组名当参数时,数组名就转换为指针类型了
mu_yang 2009-07-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ahg1001 的回复:]
引用就是别名
[/Quote]
这个说法直接了当,一针见血
ljt3969636 2009-07-16
  • 打赏
  • 举报
回复
MM还不会结贴吧?要适时结贴地~~
使用数组名字时会自动转化成指向数组第一个元素的指针,所以下面三种形式等价,其参数都是int*
void f(int*)
void f(int[])
void f(int[100])

对于第三种形式int[100]当参数有点注意的事,就是你可能原本想传递100个元素的数组但是很不幸因为其实他是int*类型,编译器无视你的愿望不会去检查你传进来的是不是100个元素,所以有可能在函数内部使用数组下标时越界.
所以用数组做参数要通过引用传递数组
void ff(int(&arr)[10])
这时编译器会检查实参数组大小是不是和形参一致也就是说下面的调用会.....
int i=0,j[10]={0,1,2,3,4,5,6,7,8,9};
f(&i);//ok,int*不检查大小
ff(&i);error,检查大小,数组大小不匹配
ff(j);//OK,数组大小匹配
ShowMan 2009-07-16
  • 打赏
  • 举报
回复
数组就是指针,大多数时候可以这么理解。
  • 打赏
  • 举报
回复
引用就是别名
mengjfu 2009-07-16
  • 打赏
  • 举报
回复
#include <stdio.h>

void fun(char *p)
{
printf("%s",p);
}

int main()
{
char s[10]="hello!";
fun(s); //传递数组s的地址
}
amossavez 2009-07-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 love1314_2004 的回复:]
引用 1 楼 liao05050075 的回复:
参数传递一个数组,传的是数组的地址


那怎么传值啊?
[/Quote]
通过地址去找这个值!
love1314_2004 2009-07-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mm6688 的回复:]
引用又是啥回事?
[/Quote]
引用传递是指在函数定义时在形参前加上引用运算符"&"。在函数被调用时,参数传递的内容不是实参的值,而是实参的地址,即将实参的地址放到C++为形参分配的内存空间中,因此形参的任何操作都会改变相应实参的值。
Walf_ghoul 2009-07-16
  • 打赏
  • 举报
回复
传递数组时,有需要的话还要另外加上数组的大小
mm6688 2009-07-16
  • 打赏
  • 举报
回复
引用又是啥回事?
mu_yang 2009-07-16
  • 打赏
  • 举报
回复
作为实参
数组名的值是一个指针
形参只要是相同类型的指针
就可以获得数组名的值
和其他的参数传递没什么不同的
taodm 2009-07-16
  • 打赏
  • 举报
回复
不能传值。但是可以传引用。
love1314_2004 2009-07-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liao05050075 的回复:]
参数传递一个数组,传的是数组的地址
[/Quote]
那怎么传值啊?
liao05050075 2009-07-16
  • 打赏
  • 举报
回复
参数传递一个数组,传的是数组的地址

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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