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

(5)数组

1. 一维数组与二维数组的定义和初始化

一维数组
  • 定义
    一维数组用于存储一组相同类型的数据元素。其定义格式为:数据类型 数组名[数组大小];。例如,定义一个包含 5 个整数的数组:int array[5];。这里array是数组名,int是数组元素的数据类型,5表示数组中元素的个数。
  • 初始化
    • 完全初始化:在定义数组时为所有元素赋初值。例如:int array[5] = {1, 2, 3, 4, 5};
    • 部分初始化:只给部分元素赋初值,未初始化的元素自动初始化为 0(对于数值类型)或'\0'(对于字符类型)。例如:int array[5] = {1, 2};,此时array[2]array[3]array[4]的值都为 0。
    • 省略数组大小初始化:如果在初始化时给出了所有元素的值,可以省略数组大小。例如:int array[] = {1, 2, 3};,编译器会根据初始化元素的个数自动确定数组大小为 3。
二维数组
  • 定义
    二维数组可以看作是一个具有行和列的表格形式的数据结构,其定义格式为:数据类型 数组名[行数][列数];。例如,定义一个 3 行 4 列的整型二维数组:int matrix[3][4];
  • 初始化
    • 按行初始化:把每行的元素用花括号括起来,依次列出。例如:
int matrix[3][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}
};
- **按顺序初始化**:也可以将所有元素按顺序写在一个花括号内,编译器会按照行优先的顺序为数组元素赋值。例如:`int matrix[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};`。
- **部分初始化**:和一维数组类似,可以只对部分元素初始化,未初始化的元素自动赋初值。例如:
int matrix[3][4] = {{1, 2},{3, 4}
};

此时,第一行的后两个元素和第二行的后两个元素以及第三行的所有元素都初始化为 0。

2. 数组做函数参数的程序设计

一维数组作为函数参数
  • 当一维数组作为函数参数时,实际上传递的是数组的首地址。在函数中,可以通过这个首地址访问整个数组。例如,编写一个函数用于计算一维数组元素的和:
int sum_array(int array[], int size) {int sum = 0;for (int i = 0; i < size; i++) {sum += array[i];}return sum;
}

main函数中调用:

int main() {int array[] = {1, 2, 3, 4, 5};int size = sizeof(array) / sizeof(array[0]);int result = sum_array(array, size);printf("数组元素的和为: %d\n", result);return 0;
}

这里int array[]在函数参数中也可以写成int *array,它们在这种情况下是等价的。

二维数组作为函数参数
  • 对于二维数组作为函数参数,需要指定第二维的大小(列数),因为编译器需要根据这个信息来计算数组元素的地址。例如,编写一个函数用于打印二维数组的元素:
void print_matrix(int matrix[][4], int rows) {for (int i = 0; i < rows; i++) {for (int j 

http://www.mrgr.cn/news/62371.html

相关文章:

  • 识别风险的提示清单
  • Cent0S9 Stream 修改指定用户密码
  • 【GL07】C语言要点
  • C语言:动态内存管理【上】
  • K8s 容器的定向调度与亲和性
  • 认知战认知作战:三藩之乱中的认知作战分析与策略
  • 【SAP FICO】八大业务_6货币资金管理
  • 数据采集-Kepware OPCUA 服务器实现
  • CNN在线识别手写中文
  • 返回数组中元素的数据类型numpy.dtype.name
  • 四季皆宜的网球场:气膜网球馆改造方案—轻空间
  • 刘艳兵-DBA016-在您的数据库中,SALES表存在于SH用户中,并且启用了统一审计。作为DBA,您成功执行了以下指令:
  • Spring Boot 配置文件详解与最佳实践
  • 第15天预编译
  • 组合两个表
  • 计算机组成原理之选择结构语句的机器级别表示
  • HTTPS对中间人真就束手就擒了?
  • NFT、加密货币和区块链将如何在某一天共同推动Web3
  • 基于 ThinkPHP+Mysql灵活用工_灵活用工系统_灵活用工平台
  • 什么样的工程项目管理软件适合中小施工企业?
  • 最小期望风险估计
  • Python中的命名规则是什么?
  • 2020年下半年网络规划设计师上午真题及答案解析
  • 前端如何检测用户登录状态是否过期?
  • 跟着小土堆学习pytorch(六)——神经网络的基本骨架(nn.model)
  • 百度搜索引擎的工作原理