二维数组的作为参数的函数引用
请教,为什么下面这个输出结果异常。我原目的是想创建一个复制二维数组的函数和显示二维数组的函数,显示的数组不应该是arr1的值吗?可是它的结果有些不太明白;
结果输出:
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
4029904 4029904 4029904 4029904 4029904
4029904 4029904 4029904 4029904 4029904
4029904 4029904 4029904 4029904 4029904
4029904 4029904 4029904 4029904 4029904
4029904 4029904 4029904 4029904 4029904
4029904 4029904 4029904 4029904 4029904
请按任意键继续. . .
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
void copy_2arr(size_t N_length, size_t M_length, int(*)[5], int(*)[5]);
void show_2arr(size_t N_length, size_t M_length, int(*)[5]);
int _tmain(int argc, _TCHAR* argv[])
{
int arr1[3][5] = { { 1, 2, 3, 4, 5 }, { 2, 3, 4 ,5, 6 }, { 7, 8, 9, 10, 11 } };
int arr2[3][5];
copy_2arr(3, 5, arr2, arr1);
show_2arr(3, 5, arr1);
show_2arr(3, 5, arr2);
system("PAUSE");
return 0;
}
void copy_2arr(size_t N_length, size_t M_length, int(*arr_des)[5], int(*arr_sour)[5])
{
for (size_t i = 0; i < N_length; i++)
{
for (size_t i = 0; i < M_length; i++)
{
arr_des[N_length][M_length] = arr_sour[N_length][M_length];
printf(" d_%d ", arr_des[N_length][M_length]);
printf(" s_%d ", arr_sour[N_length][M_length]);
printf("\n");
}
printf("\n");
}
printf("\n");
}
void show_2arr(size_t N_length, size_t M_length, int(*arr_show)[5])
{
for (size_t i = 0; i < N_length; i++)
{
for (size_t i = 0; i < M_length; i++)
{
printf(" %d ", arr_show[N_length][M_length]);
}
printf("\n");
}
printf("\n");
}结果输出:
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
d_4029904 s_4029904
4029904 4029904 4029904 4029904 4029904
4029904 4029904 4029904 4029904 4029904
4029904 4029904 4029904 4029904 4029904
4029904 4029904 4029904 4029904 4029904
4029904 4029904 4029904 4029904 4029904
4029904 4029904 4029904 4029904 4029904
请按任意键继续. . .
...全文
相关推荐
二维数组作为函数形参的两种方法
总结,本篇文章详细介绍了在C++中如何通过指针和引用两种方法将二维数组作为函数参数。这两种方法各有优缺点,选择哪种取决于具体的应用场景和需求。
二维数组参数传递方法[项目源码]
解决这一问题有几种方法:一是在函数定义时指定二维数组的列数,二是使用指向一维数组的指针并在参数中指定数组长度,三是通过二维数组引用传递并在引用中明确两个维度的大小,最后是使用指向二维数组的指针进行传递并指明数组的行和列
PHP二维数组排序的3种方法和自定义函数分享
对于二维数组,如果只考虑某一列排序,这些函数可能不够用,这时可以结合`foreach`循环和数组元素的引用,将一维数组传递给上述函数进行排序。
js二维数组排序的简单示例代码
`mySort`函数的参数设置为对所有列进行排序,顺序分别为升序、降序和升序。总的来说,这个示例代码提供了一个实用的二维数组排序解决方案,能够根据指定列和排序顺序进行多维度排序。
二维数组传参分析[源码]
由于在C语言中数组参数传递实际上是将数组的首地址传递给函数,所以这种方法并不会导致数组的复制,传递的是数组的引用。因此,函数内对数组的修改会影响到原始数组。


新手乐园
