二维数组的函数参数传递的问题,以前解决过好几次,总还是忘记,这回总结出来写在这里。
#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格式的位图转换为二维数组是一项非常实用的技术。这种技术不仅能够帮助开发者更好地理解和操作图像数据,还在诸如机器人视觉识别等应用中扮演...
数组作为函数参数是指在C语言中将数组作为函数参数传递的方式。例如,`void func(int arr[])`就是将数组作为函数参数传递。 6. 数组类型的定义 数组类型的定义是指在C语言中定义数组的类型。例如,`int arr[5];`...
这个简单的例子展示了如何在C语言中将文本文件的数据加载到二维数组中,但实际使用时可能需要根据文件内容和结构进行适当的修改,比如处理非数字字符、处理文件大小超过预设数组大小的情况等。此外,对于大文件,...
本章节主要讲解了一维数组和二维数组的定义、引用以及初始化方法。 首先,一维数组是线性数据结构,可以理解为同类型的元素序列。在C语言中,定义一维数组的基本语法是`类型说明符 数组名[常量表达式]`。例如,`...
- 遍历和修改数组元素,如题目6中将二维数组的行和列互换。 4. **数学运算与逻辑表达式**: - 使用`sqrt()`函数求平方根,如在题目1中判断素数。 - 使用逻辑运算符进行条件检查,如 `%` 模运算判断是否能被整除...
主函数main中同样实现了二维数组的打印和转置后数组的打印,以验证fun函数的正确性。 3. 简单的素数筛选算法 第三个编程题涉及到了经典的素数筛选算法(应该是埃拉托斯特尼筛法,但未给出完整的代码实现)。根据...
这个三维数组可以看作是2个二维数组,每个二维数组又可以看作3个一维数组。可以在头脑中将其想象为两个平行平面,每个平面内有3*4个点,共24个元素。 #### 二、字符串数组 除了存放数值外,还有一种特殊的数组类型...
- 使用一个二维数组 `maze[i][j]` 来表示迷宫,数组元素的值为 `1` 时代表墙面,值为 `0` 时代表通路。 - 入口坐标为 `maze[i][j]`,出口坐标为 `maze[m][n]`。 #### 技术栈与核心算法 - **语言**:C语言 - **核心...
函数是C语言中的重要组成部分,书中会涵盖函数的定义、参数传递、递归函数的使用,以及函数指针的概念。函数指针在回调函数、动态内存分配和实现设计模式等方面都有广泛应用。 预处理器在C语言中也占据着重要地位,...
在源码中,我们会看到如何声明、初始化和操作数组,包括一维数组、二维数组,以及多维数组的应用。 5. 指针:C语言的精髓之一就是指针,它能够直接访问内存地址。通过指针,我们可以高效地操作数据,实现动态内存...
6. 数组:数组是存储相同类型元素集合的数据结构,书中会介绍一维数组、二维数组的使用,以及数组作为函数参数的处理。 7. 指针:指针是C语言的特色,通过指针,可以直接操作内存地址。书中将深入讲解指针的声明、...
1. 这个题目要求编写一个函数,用于将二维数组的左下半三角元素设置为0。实现方法是通过两层循环,内层循环从0到i(包括i),在每轮循环中将对应位置的元素设为0。 2. 题目要求设计一个函数,使得输入的7个字符字符...
本书将介绍数组的使用,包括一维数组、二维数组及多维数组,并深入探讨C语言中的字符串处理,如strlen、strcpy、strcat、strcmp等函数。 4. **指针与结构体**:指针是C语言的精髓之一,它允许直接操作内存地址。书...
### C语言图形函数详解 #### 一、图形模式初始化与图形程序建立 在C语言编程环境中,特别是使用Turbo C编译器时,可以利用其提供的丰富图形函数来实现图形界面的设计与绘制。所有这些图形函数的声明都位于`...
书中将介绍如何声明和操作一维、二维数组,以及如何处理字符串,包括字符串常量、字符数组、字符串函数等。 4. **结构体与联合体**:结构体和联合体允许我们创建复杂的数据结构,是C语言中的面向结构编程的关键。书...
4. **函数**:C语言的函数是代码模块化的重要手段,例子中会包含函数定义、调用和参数传递的示例。 5. **数组**:数组是存储同类型数据的集合,源代码将展示如何声明、初始化和操作数组,包括一维、二维和多维数组...
书会详细解释数组的概念,包括一维、二维数组,以及指针的使用,如动态内存分配、指针运算和指针作为函数参数。 4. **结构体与共用体**:结构体允许我们将多个不同类型的变量组合成一个整体,而共用体则提供了一种...
书中会涵盖一维、二维及多维数组的创建和操作,以及如何使用指针操作数组。 5. **指针**:C语言的精髓之一就是指针,它能直接操作内存。书中会深入探讨指针的概念,包括声明、初始化、指针运算、指针作为函数参数等...
此外,通过实例,读者还可以学习到如何使用指针进行二维数组的操作,或者实现链表、树等复杂数据结构。 预处理器在C语言中起着不可忽视的作用,它可以用于宏定义、条件编译等。书中的相关章节可能会解释预处理器的...
1. **数据结构定义**:首先,我们需要定义一个二维数组来表示矩阵,以及一个一维数组存储对角元素的更新值。例如,可以定义一个 `int matrix[N][N]` 来表示 N×N 的矩阵,其中 `N` 是矩阵的大小。 2. **输入矩阵**...