函数里有参数是数组该怎么调用,有例子

如:voidxxx(inta,intb[]){...}intmain(){intt,k[10];xxx(t,k);...}类似看过有这样调用数组参数的.我也用程序编过,的... 如: void xxx(int a,int b[])
{...}
int main()
{int t,k[10];
xxx(t,k);...}
类似看过有这样调用数组参数的.
我也用程序编过,的确可以,甚至在xxx函数里的操作,可以直接改变数组的值.明明形参那里没有取址符号"&"啊..
有以下三问题:
1.为什么形参写成int b[],能解释下吗~我自己编写一般编int *b的;
2.为什么形参里没有取址"&"也可以改变主函数中k数组的值;
3.如果我要调用二维数组呢,一维数组我只知道可以int *b替代,但是二维不懂.难道是int b[][]..这样么???我貌似去试过..好像编译不过
展开
 我来答
韧劲9
推荐于2017-09-03 · TA获得超过9224个赞
知道小有建树答主
回答量:1638
采纳率:92%
帮助的人:354万
展开全部
可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:

void Func(int array[3][10]);

void Func(int array[][10]);

二者都是合法而且等价,但是不能把第二维或者更高维的大小省略,如下面的定义是不合法的:

void Func(int array[][]);

因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多 少列,不能只指定一维而不指定第二维,下面写法是错误的:

void Func(int array[3][]);实参数组维数可以大于形参数组,例如实参数组定义为:

void Func(int array[3][10]);

而形参数组定义为:

int array[5][10];

这时形参数组只取实参数组的一部分,其余部分不起作用。
adoqq_bd
2011-10-14 · TA获得超过7050个赞
知道大有可为答主
回答量:1818
采纳率:63%
帮助的人:1618万
展开全部
1,一样的
2,数组名就是数组的首地址
3二维自然就是int**b了,指向指针的指针
更多追问追答
追问
那里有个 []  那也叫数组名(数组首地址)么?
对于第三个有个例子问问:
函数里如果是
char s[20][20];
void xxx(char **s)
{int i=0;
while(i++<20)
{printf("%s",(*s)++);}
}
这样就能把二维数组 20行的字符串输出么?
追答
二维指针实际访问数组的时候有许多微妙的地方,而不能简单的用**p
像“把二维数组 20行的字符串输出”,首先这个字符串是个一维数组,而不是char*,那么就是定义一个指针,它指向一个一维数组,那就是 char(*p)[],而实际定义时还必须指明这个数组的长度:char(*p)[20];

还有一种处理字符串集合更常用的方法就是定义一个数组,它的元素是char*; ,那这个二维定义就是,char *p[],同样要指明长度,char *p[20],

char(*p)[20];//p是一个指针,*p指向一个char[20];
char *p[20]; //p是一个数组,它的元素是20个char*;

而int** p就是简单的二维指针,*p指向一个int*

反正多维指针用起来很绕人,能不用就不用
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
19890106sam
2011-10-14 · 超过15用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:40.2万
展开全部
。。。。
1.可以都一样,编译器自动把数组处理成指针。
2.不行,肯定不行。
3.二维数组,形参用 指针数组表示 :类型 (* p)[ ] 的形式表示。

你追加的问题:char **s 和char s[ ][ ]不一样你编译试试通不过。
char s[ ][ ]用char (*P)[ ]可以表示即用 char *(*p+i) +j ) 也行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一个的一个
2011-10-14 · 超过11用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:37.8万
展开全部
C的数组在传参以及在表达式中使用的时候, 就是一个指向该数组第一个元素的指针常量。 明白了这一点, 你的问题都不成问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式