当前位置: 首页 > news >正文

【C语言练习】014. 使用数组作为函数参数

014. 使用数组作为函数参数

  • 014. 使用数组作为函数参数
    • 示例1:使用数组作为函数参数并修改数组元素
      • 函数定义
        • 输出结果
    • 示例2:使用数组作为函数参数并计算数组的平均值
      • 函数定义
      • 输出结果
    • 示例3:使用二维数组作为函数参数
      • 函数定义
      • 输出结果
    • 示例4:使用动态分配的数组作为函数参数
      • 函数定义
      • 输出结果

014. 使用数组作为函数参数

在C语言中,数组作为函数参数时,实际上传递的是数组的首地址(即数组的第一个元素的地址)。这意味着函数内部对数组的修改会直接影响到原始数组。以下将通过具体示例展示如何使用数组作为函数参数,并在函数中处理数组。

示例1:使用数组作为函数参数并修改数组元素

函数定义

定义一个函数,用于将数组中的每个元素增加1。

#include <stdio.h>// 函数定义:将数组中的每个元素增加1
void incrementArray(int arr[], int size) {for (int i = 0; i < size; i++) {arr[i]++; // 修改数组元素}
}int main() {int arr[] = {1, 2, 3, 4, 5}; // 声明并初始化数组int size = sizeof(arr) / sizeof(arr[0]); // 计算数组的大小printf("Before incrementing:\n");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");// 调用函数并传递数组incrementArray(arr, size);printf("After incrementing:\n");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");return 0;
}
输出结果
Before incrementing:
1 2 3 4 5 
After incrementing:
2 3 4 5 6 

示例2:使用数组作为函数参数并计算数组的平均值

函数定义

定义一个函数,用于计算数组的平均值并返回结果。

#include <stdio.h>// 函数定义:计算数组的平均值
double calculateAverage(int arr[], int size) {int sum = 0;for (int i = 0; i < size; i++) {sum += arr[i]; // 计算总和}return (double)sum / size; // 返回平均值
}int main() {int arr[] = {1, 2, 3, 4, 5}; // 声明并初始化数组int size = sizeof(arr) / sizeof(arr[0]); // 计算数组的大小// 调用函数并接收返回值double average = calculateAverage(arr, size);printf("The average of the array elements is: %.2f\n", average);return 0;
}

输出结果

The average of the array elements is: 3.00

示例3:使用二维数组作为函数参数

函数定义

定义一个函数,用于打印二维数组的所有元素。

#include <stdio.h>// 函数定义:打印二维数组的所有元素
void printMatrix(int matrix[][4], int rows) {for (int i = 0; i < rows; i++) {for (int j = 0; j < 4; j++) {printf("%d ", matrix[i][j]);}printf("\n");}
}int main() {int matrix[3][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}}; // 声明并初始化二维数组// 调用函数并传递二维数组printMatrix(matrix, 3);return 0;
}

输出结果

1 2 3 4 
5 6 7 8 
9 10 11 12 

示例4:使用动态分配的数组作为函数参数

函数定义

定义一个函数,用于将动态分配的数组中的每个元素增加1。

#include <stdio.h>
#include <stdlib.h>// 函数定义:将数组中的每个元素增加1
void incrementArray(int *arr, int size) {for (int i = 0; i < size; i++) {arr[i]++; // 修改数组元素}
}int main() {int size = 5;int *arr = (int *)malloc(size * sizeof(int)); // 动态分配数组if (arr == NULL) {printf("Memory allocation failed\n");return 1;}// 初始化数组for (int i = 0; i < size; i++) {arr[i] = i + 1;}printf("Before incrementing:\n");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");// 调用函数并传递动态分配的数组incrementArray(arr, size);printf("After incrementing:\n");for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");// 释放动态分配的内存free(arr);return 0;
}

输出结果

Before incrementing:
1 2 3 4 5 
After incrementing:
2 3 4 5 6 

相关文章:

  • Java关键字解析
  • Canvas特效实例:黑客帝国-字母矩阵(字母雨)
  • OpenAI最新发布的GPT-4.1系列模型,性能体验如何?
  • 设计模式简述(十四)组合模式
  • Unity SpriteMask(精灵遮罩)
  • Go 语言中一个功能强大且广泛使用的数据验证库github.com/go-playground/validator/v10
  • Js扩展DOM、BOM、AJAX、事件、定时器
  • 系统架构设计师:设计模式概述
  • 为 Unity 项目添加自定义 USB HID 设备支持 (适用于 PC 和 Android/VR)-任何手柄、无人机手柄、摇杆、方向盘
  • 补题( Convolution, 二维卷积求输出矩阵元素和最大值)
  • 华为云Astro大屏连接器创建操作实例:抽取物联网iotda影子设备数据的连接器创建
  • 【中间件】bthread_基础_TaskControl
  • Kotlin革新数据分析
  • linux 使用nginx部署next.js项目,并使用pm2守护进程
  • 信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(六)
  • 快速上手非关系型数据库-MongoDB
  • 使用Node编写轻量级后端快速入门
  • UDP数据包和TCP数据包的区别;网络编程套接字;不同协议的回显服务器
  • WPF采集欧姆龙PLC、基恩士PLC、西门子PLC、汇川PLC、台达PLC数据
  • WPF实现数据库操作与日志记录
  • 五一假期首日,多地党政主官暗访督查节日安全和值班值守工作
  • 上海浪琴环球马术冠军赛明日启幕!五一假期在这里感受精彩
  • 王受文已任中华全国工商业联合会领导班子成员
  • 迪卡侬回应出售中国业务30%股份传闻:始终扎根中国长期发展
  • 铁路迎来节前出行高峰,今日全国铁路预计发送旅客1870万人次
  • 山西太原一居民小区发生爆炸,应急管理部派工作组赴现场