前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C 语言】数组 ( 多维数组做函数形参退化为指针过程 | int array[2][3] -> int array[][3] -> int (*array)[3] )

【C 语言】数组 ( 多维数组做函数形参退化为指针过程 | int array[2][3] -> int array[][3] -> int (*array)[3] )

作者头像
韩曙亮
发布2023-03-29 21:45:30
5790
发布2023-03-29 21:45:30
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、多维数组做函数形参退化为指针过程


一维数组 作为 函数参数时 , 会退化为指针 ; 解决方案是 传入 数组首地址 和 数组元素个数 ;

如果 多维数组 作为 函数参数时 , 也存在退化问题 ;

1、使用 int array[2][3] 作函数参数

使用 int array[2][3] 作为函数参数 , 可以完整打印出二维数组中的值 ;

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void print_array(int array[2][3])
{
    // 循环控制变量
    int i = 0, j = 0;

    // 打印 二维数组 值
    for(i = 0; i < 2; i ++)
    {
        for(j = 0; j < 3; j++)
        {
             printf("array[%d][%d] = %d\n", i, j, array[i][j]);
        }
    }
}

/**
 * @brief main
 * @return
 */
int main()
{
    // 声明一个 二维数组
    int array[2][3];

    // 循环控制变量
    int i = 0, j = 0;

    // 赋值时使用的索引值
    int index = 0;

    // 为 二维数组 赋值
    for(i = 0; i < 2; i ++)
    {
        for(j = 0; j < 3; j++)
        {
            array[i][j] = index++;
        }
    }

    // 打印二维数组值
    print_array(array);

    // 命令行不要退出
    system("pause");
    return 0;
}

执行结果 :

2、使用 int array[][3] 作函数参数

使用 int array[][3] 作为函数参数 , 可以完整打印出二维数组中的值 ;

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void print_array(int array[][3])
{
    // 循环控制变量
    int i = 0, j = 0;

    // 打印 二维数组 值
    for(i = 0; i < 2; i ++)
    {
        for(j = 0; j < 3; j++)
        {
             printf("array[%d][%d] = %d\n", i, j, array[i][j]);
        }
    }
}

/**
 * @brief main
 * @return
 */
int main()
{
    // 声明一个 二维数组
    int array[2][3];

    // 循环控制变量
    int i = 0, j = 0;

    // 赋值时使用的索引值
    int index = 0;

    // 为 二维数组 赋值
    for(i = 0; i < 2; i ++)
    {
        for(j = 0; j < 3; j++)
        {
            array[i][j] = index++;
        }
    }

    // 打印二维数组值
    print_array(array);

    // 命令行不要退出
    system("pause");
    return 0;
}

执行结果 :

3、使用 int (*array)[3] 作函数参数

使用 int (*array)[3] 作为函数参数 , 可以完整打印出二维数组中的值 ;

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void print_array(int (*array)[3])
{
    // 循环控制变量
    int i = 0, j = 0;

    // 打印 二维数组 值
    for(i = 0; i < 2; i ++)
    {
        for(j = 0; j < 3; j++)
        {
             printf("array[%d][%d] = %d\n", i, j, array[i][j]);
        }
    }
}

/**
 * @brief main
 * @return
 */
int main()
{
    // 声明一个 二维数组
    int array[2][3];

    // 循环控制变量
    int i = 0, j = 0;

    // 赋值时使用的索引值
    int index = 0;

    // 为 二维数组 赋值
    for(i = 0; i < 2; i ++)
    {
        for(j = 0; j < 3; j++)
        {
            array[i][j] = index++;
        }
    }

    // 打印二维数组值
    print_array(array);

    // 命令行不要退出
    system("pause");
    return 0;
}

执行结果 :

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、多维数组做函数形参退化为指针过程
    • 1、使用 int array[2][3] 作函数参数
      • 2、使用 int array[][3] 作函数参数
        • 3、使用 int (*array)[3] 作函数参数
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档