C语言问题,请问二维数组的函数参数是怎么传递的?

2024年11月22日 20:35
有5个网友回答
网友(1):

数组为参数时会退化为一个二级指针传递,如图,可以将函数头液薯乎部写成
void shuchu(int **array_num);
在函数中调用时,直接传递数组名就可以了,数组名可以手激视为数组的“头指针”,可以用这个指针进行一系列的相关操作,如图,可以按如下方式调用
shuchu(a);

另外,一个建议:不要在传参时忽略数组的长度,最好显式的以参数的形式传递给闹悉函数
或者,在数组中做标志,在函数中使用时可以根据标志自行分出维度

满意请采纳,不满意请追问

网友(2):

你好!关于二维数液核唤组传参问题,

在调用的时候直接传数组指针即可,

即:

void main()
{
int a[10][2];
shuru(a);
shuchu(a);
}

函闹凯数形参有两种写法,可以写成

void shuru(int (*array_num)[2]){}
//或者
void shuru(int array_num[][2]){}

函氏世数shuchu() 也是一样,

 

望采纳,如有不明白请追问谢谢!

网友(3):

在形参是数组的情况下,只要是数组,无论维数,实际上在调用函数时,传给函数的将是一个数组的首地址,以及维数等相关信息
也就是说,在函数执行过程中,并不会新开辟内存空间,而是形参实参共用同一段内存空间
所以,在这种情况下,函数内蠢乎部对数组进行修改,其值会返回给实参
你的例子中调用部分有问题慧唤,不能这样前档凯
shuru(a[10][2])
而是
shuru(a)
因为a[10][2]代表数组a中的一个元素,而且是越界的
而a才是数组名

网友(4):

"数组信旁为参数时会前坦弯退化为一个二级指针慧闷传递"这个理解是不对的 二维数组的形参声明应该是 int(*array_num)[2]

网友(5):