`
guoyiqi
  • 浏览: 1001914 次
社区版块
存档分类
最新评论

C语言中将二维数组作为参数传递给函数的方法

 
阅读更多

 

二维数组的函数参数传递的问题,以前解决过好几次,总还是忘记,这回总结出来写在这里。

 

#include <stdio.h>
/*********************************
* 方法1: 第一维的长度可以不指定 *
*                但必须指定第二维的长度 *                            
*********************************/
void print_a(int a[][5], int n, int m)    
{
          int i, j;
          
          for(i = 0; i < n; i++)
          {
                      for(j = 0; j < m; j++)
                            printf("%d ", a[i][j]);
                            
                      printf("\n");
          }
}
/*****************************************
*方法2: 指向一个有5个元素一维数组的指针 *
*****************************************/
void print_b(int (*a)[5], int n, int m)        
{
          int i, j;
          
          for(i = 0; i < n; i++)
          {
                      for(j = 0; j < m; j++)
                            printf("%d ", a[i][j]);
                      printf("\n");
          }
}
/***********************************
*方法3: 利用数组是顺序存储的特性, *
*              通过降维来访问原数组!          *
***********************************/
void print_c(int *a, int n, int m)                          
{
          int i, j;
          
          for(i = 0; i < n; i++)
          {
                      for(j = 0; j < m; j++)
                            printf("%d ", *(a + i*m + j));
                            
                      printf("\n");
          }
}
int main(void)
{
        int a[5][5] = {{1, 2}, {3, 4, 5}, {6}, {7}, {0, 8}};
        
        printf("\n方法1:\n");  
        print_a(a, 5, 5);
        
        printf("\n方法2:\n");  
        print_b(a, 5, 5);  
        
        printf("\n方法3:\n");  
        print_c(&a[0][0], 5, 5);
        
        getch();
        return 0;
}
分享到:
评论

相关推荐

    把真彩色BMP位图转化为二维数组

    ### 把真彩色BMP位图转化为二维数组 在计算机编程与图像处理领域,将BMP格式的位图转换为二维数组是一项非常实用的技术。这种技术不仅能够帮助开发者更好地理解和操作图像数据,还在诸如机器人视觉识别等应用中扮演...

    (完整版)C语言程序设计教程第五章练习题题目.docx

    数组作为函数参数是指在C语言中将数组作为函数参数传递的方式。例如,`void func(int arr[])`就是将数组作为函数参数传递。 6. 数组类型的定义 数组类型的定义是指在C语言中定义数组的类型。例如,`int arr[5];`...

    C读txt到二维数组的实现方法

    这个简单的例子展示了如何在C语言中将文本文件的数据加载到二维数组中,但实际使用时可能需要根据文件内容和结构进行适当的修改,比如处理非数字字符、处理文件大小超过预设数组大小的情况等。此外,对于大文件,...

    C语言 叫你学会编程 准过二级

    本章节主要讲解了一维数组和二维数组的定义、引用以及初始化方法。 首先,一维数组是线性数据结构,可以理解为同类型的元素序列。在C语言中,定义一维数组的基本语法是`类型说明符 数组名[常量表达式]`。例如,`...

    C语言编程[借鉴].pdf

    - 遍历和修改数组元素,如题目6中将二维数组的行和列互换。 4. **数学运算与逻辑表达式**: - 使用`sqrt()`函数求平方根,如在题目1中判断素数。 - 使用逻辑运算符进行条件检查,如 `%` 模运算判断是否能被整除...

    计算机二级C语言考试编程题.pdf

    主函数main中同样实现了二维数组的打印和转置后数组的打印,以验证fun函数的正确性。 3. 简单的素数筛选算法 第三个编程题涉及到了经典的素数筛选算法(应该是埃拉托斯特尼筛法,但未给出完整的代码实现)。根据...

    多维数组介绍

    这个三维数组可以看作是2个二维数组,每个二维数组又可以看作3个一维数组。可以在头脑中将其想象为两个平行平面,每个平面内有3*4个点,共24个元素。 #### 二、字符串数组 除了存放数值外,还有一种特殊的数组类型...

    迷宫问题的求解方法(纯C)

    - 使用一个二维数组 `maze[i][j]` 来表示迷宫,数组元素的值为 `1` 时代表墙面,值为 `0` 时代表通路。 - 入口坐标为 `maze[i][j]`,出口坐标为 `maze[m][n]`。 #### 技术栈与核心算法 - **语言**:C语言 - **核心...

    C语言深度解剖(第2版)解开程序员面试笔试的秘密 PDF电子书下载 带书签目录 完整版

    函数是C语言中的重要组成部分,书中会涵盖函数的定义、参数传递、递归函数的使用,以及函数指针的概念。函数指针在回调函数、动态内存分配和实现设计模式等方面都有广泛应用。 预处理器在C语言中也占据着重要地位,...

    《C语言实战105例》源码光盘

    在源码中,我们会看到如何声明、初始化和操作数组,包括一维数组、二维数组,以及多维数组的应用。 5. 指针:C语言的精髓之一就是指针,它能够直接访问内存地址。通过指针,我们可以高效地操作数据,实现动态内存...

    C语言实例精粹

    6. 数组:数组是存储相同类型元素集合的数据结构,书中会介绍一维数组、二维数组的使用,以及数组作为函数参数的处理。 7. 指针:指针是C语言的特色,通过指针,可以直接操作内存地址。书中将深入讲解指针的声明、...

    计算机二级考试C语言操作题题库.pdf

    1. 这个题目要求编写一个函数,用于将二维数组的左下半三角元素设置为0。实现方法是通过两层循环,内层循环从0到i(包括i),在每轮循环中将对应位置的元素设为0。 2. 题目要求设计一个函数,使得输入的7个字符字符...

    C语言课程设计案例精编

    本书将介绍数组的使用,包括一维数组、二维数组及多维数组,并深入探讨C语言中的字符串处理,如strlen、strcpy、strcat、strcmp等函数。 4. **指针与结构体**:指针是C语言的精髓之一,它允许直接操作内存地址。书...

    c语言图形函数

    ### C语言图形函数详解 #### 一、图形模式初始化与图形程序建立 在C语言编程环境中,特别是使用Turbo C编译器时,可以利用其提供的丰富图形函数来实现图形界面的设计与绘制。所有这些图形函数的声明都位于`...

    c语言通用范例开发金典

    书中将介绍如何声明和操作一维、二维数组,以及如何处理字符串,包括字符串常量、字符数组、字符串函数等。 4. **结构体与联合体**:结构体和联合体允许我们创建复杂的数据结构,是C语言中的面向结构编程的关键。书...

    C语言105个例子 源代码

    4. **函数**:C语言的函数是代码模块化的重要手段,例子中会包含函数定义、调用和参数传递的示例。 5. **数组**:数组是存储同类型数据的集合,源代码将展示如何声明、初始化和操作数组,包括一维、二维和多维数组...

    C语言趣味程序百例精解

    书会详细解释数组的概念,包括一维、二维数组,以及指针的使用,如动态内存分配、指针运算和指针作为函数参数。 4. **结构体与共用体**:结构体允许我们将多个不同类型的变量组合成一个整体,而共用体则提供了一种...

    C语言精彩编程百例

    书中会涵盖一维、二维及多维数组的创建和操作,以及如何使用指针操作数组。 5. **指针**:C语言的精髓之一就是指针,它能直接操作内存。书中会深入探讨指针的概念,包括声明、初始化、指针运算、指针作为函数参数等...

    C语言高级编程及实例剖析和源码

    此外,通过实例,读者还可以学习到如何使用指针进行二维数组的操作,或者实现链表、树等复杂数据结构。 预处理器在C语言中起着不可忽视的作用,它可以用于宏定义、条件编译等。书中的相关章节可能会解释预处理器的...

    YACOBI_C语言矩阵逆矩阵计算方法_

    1. **数据结构定义**:首先,我们需要定义一个二维数组来表示矩阵,以及一个一维数组存储对角元素的更新值。例如,可以定义一个 `int matrix[N][N]` 来表示 N×N 的矩阵,其中 `N` 是矩阵的大小。 2. **输入矩阵**...

Global site tag (gtag.js) - Google Analytics