亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C语言中将一维与二维数组传递给函数的实战指南

C语言中将一维与二维数组传递给函数的实战指南

本教程通过清晰的代码示例和最佳实践技巧,讲解如何在C语言中将整个数组(包括一维和多维数组)传递给函数。

在C语言中,数组名在传递给函数时会退化为指针,这使得函数能够直接操作原始数据而无需复制。理解这一行为对于编写高效、可维护的代码至关重要。


传递单个数组元素

传递单个元素与传递任何基本类型完全相同。

示例 1:传递单个数组元素

#include <stdio.h>
void display(int age1, int age2) {
    printf("%d\n", age1);
    printf("%d\n", age2);
}
int main() {
    int ageArray[] = {2, 8, 4, 12};
    // 将第二个和第三个元素传递给 display()
    display(ageArray[1], ageArray[2]);
    return 0;
}

输出

8
4

这里我们像传递普通变量一样传递 ageArray[1] 和 ageArray[2]。函数按值接收它们,因此原始数组保持不变。


传递整个一维数组

要将整个数组传递给函数,只需提供数组名。函数原型必须指明数组参数,但实际大小可以省略。编译器将参数视为指向首元素的指针。

示例 2:计算数组元素之和

#include <stdio.h>
float calculateSum(float num[]);
int main() {
    float result, num[] = {23.4, 55, 22.6, 3, 40.5, 18};
    // 将整个数组传递给 calculateSum()
    result = calculateSum(num);
    printf("Result = %.2f", result);
    return 0;
}
float calculateSum(float num[]) {
    float sum = 0.0;
    for (int i = 0; i < 6; ++i) {
        sum += num[i];
    }
    return sum;
}

输出

Result = 162.50

函数签名 float calculateSum(float num[]) 告诉编译器 num 是指向 float 数组的指针。循环在原地处理数组,无需复制。


传递多维数组

多维数组遵循相同原则:数组名退化为指向第一行的指针。然而,编译器必须知道除第一维以外所有维度的大小,以便计算正确的内存偏移量。

示例 3:传递二维数组

#include <stdio.h>
void displayNumbers(int num[2][2]);
int main() {
    int num[2][2];
    printf("请输入 4 个数字:\n");
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            scanf("%d", &num[i][j]);
        }
    }
    // 将二维数组传递给函数
    displayNumbers(num);
    return 0;
}
void displayNumbers(int num[2][2]) {
    printf("显示内容:\n");
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            printf("%d\n", num[i][j]);
        }
    }
}

输出

请输入 4 个数字:
2 3 4 5
显示内容:
2
3
4
5

函数原型 void displayNumbers(int num[2][2]) 声明了一个 2×2 的整型数组。调用函数时只需传递 num;编译器会自动处理指针转换。

注意:可以省略行维度,但必须指定列大小:int num[][2] 是合法的,而列大小对于地址计算至关重要。


重要提示: C语言允许将数组传递给函数,但不支持直接从函数返回数组。如需返回复杂数据,请使用指针或结构体。

C语言

  1. 掌握 C# 数组:声明、初始化与核心操作完全指南
  2. C 语言数据类型详解:int、float、char 等核心类型完全指南
  3. C 语言函数详解:定义、声明、调用与参数传递
  4. C 语言位域:高效内存使用的实战技巧
  5. C 语言文件 I/O 实战:创建、打开、读写与二进制操作
  6. C 语言可变参数详解:stdarg.h 实战指南
  7. C++多态实战指南:虚函数、动态绑定与纯虚函数
  8. C# 方法完全指南:定义、调用、递归与参数传递
  9. 深入理解 C# 委托:函数引用与事件的完整指南
  10. 精通Python Pass语句:实战指南
  11. 精通Python函数参数:位置、关键字与默认参数
  12. Python 闭包详解:嵌套函数如何捕获变量