教你夺冠


私信TA

用户名:835685327

访问量:156855

签 名:

相互交流 相互学习

等  级
排  名 15
经  验 22553
参赛次数 0
文章发表 84
年  龄 0
在职情况 学生
学  校 辣鸡施工大学
专  业

  自我简介:

努力刷题 熟能生巧!

    借此题复习一下二维数组作为函数参数的情况。

    因为二维数组名是指向它第一个元素的指针,而二维数组的元素为一维数组,所以二维数组名就是一个数组指针。故若要将二维数组名作为参数传入调用函数时,形参应该写为一个数组指针的形式。

例如:

   int matrix[3][10];
   ...
   func2(matrix);
   这里参数matrix的类型是指向包含10个整型元素的数组的指针,可知func2的原型可能是以下两种中的一种:
   void func2(int (*mat)[10]); //ok!
   void func2(int mat[][10]);  //ok!


参考代码如下:

#include <stdio.h>

//转置函数
void transpose(int (*array)[3])
{
    int tmp[3][3]; //定义一个临时数组存放转置矩阵

    int i, j;
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            tmp[i][j] = array[j][i];
        }
    }
    
    //修改原数组
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            array[i][j] = tmp[i][j];
        }
    }
}

int main()
{
    int array[3][3];

    int i, j;
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            scanf("%d", &array[i][j]);
        }
    }
    
    transpose(array);

    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            printf("%d ", array[i][j]);
        }
        printf("\n");
    }

    return 0;
}


 

0.0分

3 人评分

  评论区

可以用个结构包装数组呀
2018-05-10 00:44:17
  • «
  • 1
  • »