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

2025-06-27 23:15:25
推荐回答(4个)
回答1:

可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:

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];

这时形参数组只取实参数组的一部分,其余部分不起作用。

回答2:

1,一样的
2,数组名就是数组的首地址
3二维自然就是int**b了,指向指针的指针

回答3:

。。。。
1.可以都一样,编译器自动把数组处理成指针。
2.不行,肯定不行。
3.二维数组,形参用 指针数组表示 :类型 (* p)[ ] 的形式表示。

你追加的问题:char **s 和char s[ ][ ]不一样你编译试试通不过。
char s[ ][ ]用char (*P)[ ]可以表示即用 char *(*p+i) +j ) 也行

回答4:

C的数组在传参以及在表达式中使用的时候, 就是一个指向该数组第一个元素的指针常量。 明白了这一点, 你的问题都不成问题。