C语言:(5.初级数组)
一、什么是数组数组是一组相同类型元素构成的集合。Type Name[Size];组成部分含义示例Type每个元素的类型int, char, doubleName数组的名字arr, brrSize元素个数10, 20数组的每一个成员Name[0]到Name[Size-1]计算机中所有序号从0开始int arr[5]; printf(%d\n, sizeof(arr)); // 205个int × 4字节二、数组的分类分类语法说明内存大小假设int 4字节一维数组int arr[10]10个int40字节二维数组int arr[3][4]3个int[4]48字节三维数组int arr[2][3][4]2个int[3][4]96字节一维数组内存布局起始地址1000成员字节范围地址arr[0]1-41000-1003arr[1]5-81004-1007arr[2]9-121008-1011arr[3]13-161012-1015arr[4]17-201016-1019三、数组的三种初始化1.初始化一直接定义并初始化int arr[5] {1, 2, 3, 4, 5}; int arr2[] {1, 2, 3, 4, 5}; // Size可以省略 int arr3[10] {1, 2, 3}; // 后面7个自动补0 int arr4[10] {}; // 全部为02.初始化二先定义后赋值int brr[5]; brr[0] 1; brr[1] 2; brr[2] 3; brr[3] 4; brr[4] 5;// 循环赋值 int crr[5]; for (int i 0; i 5; i) { crr[i] i 1; }注意这种初始化方式Size不可以省略3.初始化三从键盘获取int drr[5]; printf(请输入5个整数); for (int i 0; i 5; i) { scanf(%d, drr[i]); }注意Size也不可以省略四、二维数组二维数组是“由一组相同的数组类型构成的集合”。内存布局行优先存储arr[0][0] arr[0][1] arr[0][2] arr[0][3] arr[1][0] arr[1][1] ... 1 2 3 4 5 6 ...二维数组的三种初始化// 初始化一 int arr[3][4] { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; // 初始化二 int brr[3][4]; int temp 1; for (int i 0; i 3; i) { for (int j 0; j 4; j) { brr[i][j] temp; } } // 初始化三 int crr[3][4]; for (int i 0; i 3; i) { for (int j 0; j 4; j) { scanf(%d, crr[i][j]); } }五、三维数组三维数组是“由一组相同的二维数组类型构成的集合”。int arr[2][3][4] { { // 第一组二维数组 {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }, { // 第二组二维数组 {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24} } };三维数组遍历for (int i 0; i 2; i) { for (int j 0; j 3; j) { for (int k 0; k 4; k) { printf(%d , arr[i][j][k]); } printf(\n); } printf(\n); }六、数组长度公式// 一维数组长度 int len1 sizeof(arr) / sizeof(arr[0]); // 二维数组行数和列数 int rows sizeof(brr) / sizeof(brr[0]); int cols sizeof(brr[0]) / sizeof(brr[0][0]); // 三维数组各维度长度 int d1 sizeof(arr) / sizeof(arr[0]); int d2 sizeof(arr[0]) / sizeof(arr[0][0]); int d3 sizeof(arr[0][0]) / sizeof(arr[0][0][0]);七、数组名面试必考int arr[10] {0}; printf(%d\n, sizeof(arr)); // 40 - 整个数组的大小 printf(%p\n, arr); // 整个数组的地址 printf(%p\n, arr); // 首元素的地址 printf(%p\n, arr 1); // 首元素地址 4 printf(%p\n, arr 1); // 整个数组地址 40数组名的三种身份情况含义类型sizeof(数组名)整个数组的大小Type [Size]数组名整个数组的地址Type(*) [Size]其他情况首元素的地址Type*int main() { int arr[10] {0}; printf(%p %p\n, arr, arr 1); // 差4字节int* printf(%p %p\n, arr, arr 1); // 差40字节整个数组 printf(%d %d\n, sizeof(arr), sizeof(arr)); // 40 和 4 return 0; }八、常用数组操作1. 求和int sum 0; for (int i 0; i len; i) { sum arr[i]; }2. 最大值擂台法int max arr[0]; for (int i 1; i len; i) { if (arr[i] max) { max arr[i]; } }3. 最小值int min arr[0]; for (int i 1; i len; i) { if (arr[i] min) { min arr[i]; } }4. 平均值double avg (double)sum / len;5. 冒泡排序void BubbleSort(int arr[], int len) { for (int i 0; i len - 1; i) { for (int j 0; j len - i - 1; j) { if (arr[j] arr[j 1]) { int temp arr[j]; arr[j] arr[j 1]; arr[j 1] temp; } } } }九、面试考点与避坑指南考点1数组名与指针的区别int arr[10]; int *p arr; sizeof(arr); // 40 sizeof(p); // 4指针大小考点2二维数组的指针类型int arr[3][4]; // arr的类型是 int(*)[4]指向有4个int的数组的指针 // arr 1 跳过了 4个int 16字节考点3数组作为函数参数会退化void func(int arr[10]) { printf(%d\n, sizeof(arr)); // 4不是40 } // 因为数组参数退化为指针int arr[] 等价于 int *arr正确做法同时传递长度void func(int arr[], int len) { for (int i 0; i len; i) { printf(%d , arr[i]); } }考点4常见错误//数组不能整体赋值 int arr1[5] {1, 2, 3, 4, 5}; int arr2[5]; arr2 arr1; // 错误 //用循环或memcpy for (int i 0; i 5; i) { arr2[i] arr1[i]; }总结知识点要点数组初始化三种方式Size可省略的情况数组名sizeof和时是整体其他情况是首元素地址二维数组行优先存储arr[i][j]*(*(arri)j)数组传参会退化为指针需要额外传长度常见坑数组不能整体赋值不能返回局部数组

相关新闻

终极PC分屏游戏解决方案:一台电脑实现多人本地协作的革命

终极PC分屏游戏解决方案:一台电脑实现多人本地协作的革命

终极PC分屏游戏解决方案:一台电脑实现多人本地协作的革命 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 你是否曾梦想与朋友在同一台电…

2026/7/25 2:55:45阅读更多 →
提示词润色不是“改语法”,而是重写学术认知链:基于Coh-Metrix可读性模型的5层语义校准法

提示词润色不是“改语法”,而是重写学术认知链:基于Coh-Metrix可读性模型的5层语义校准法

更多请点击: https://codechina.net 第一章:提示词润色不是“改语法”,而是重写学术认知链:基于Coh-Metrix可读性模型的5层语义校准法 提示词润色的本质,是重构用户与大语言模型之间的认知对齐路径,而非简…

2026/7/25 2:55:45阅读更多 →
InfiniSynapse智能工具:小红书内容生成与变现全攻略

InfiniSynapse智能工具:小红书内容生成与变现全攻略

1. 项目背景解析InfiniSynapse这个听起来很"黑科技"的名字,实际上是一种结合内容生成与用户行为分析的智能工具。它最早出现在海外创作者圈子,后来被跨境电商从业者改良后引入国内社交媒体平台。我在去年初第一次接触这个工具时,就…

2026/7/25 2:53:44阅读更多 →
ChatGPT邮件日历插件:智能自动化提升工作效率实践指南

ChatGPT邮件日历插件:智能自动化提升工作效率实践指南

在日常工作中,邮件处理和日程安排占据了大量时间。手动筛选重要邮件、整理会议邀请、同步日历事件不仅繁琐,还容易出错。ChatGPT 的强大对话能力结合邮件和日历插件,可以自动化处理这些重复性任务,让开发者更专注于核心工作。本文…

2026/7/25 4:29:58阅读更多 →
智能体技能系统:模块化AI开发的核心框架解析

智能体技能系统:模块化AI开发的核心框架解析

1. 智能体技能系统概述在人工智能领域,Agent Skills(智能体技能系统)正逐渐成为构建复杂AI应用的核心框架。这套系统通过模块化设计,让开发者能够像搭积木一样组合不同功能单元,创造出具备多维度能力的智能体。我最初接…

2026/7/25 4:29:58阅读更多 →
从Rot13到Rot8000:C语言实现Unicode字符旋转加密算法详解

从Rot13到Rot8000:C语言实现Unicode字符旋转加密算法详解

1. 项目概述:为什么是Rot8000?在信息安全领域,字符替换加密是一种古老而经典的技术,从凯撒密码(Rot13)到维吉尼亚密码,其核心思想都是通过位移或替换来混淆信息。今天我们要聊的Rot8000&#xf…

2026/7/25 4:29:58阅读更多 →
基于YOLO的人群密度检测系统设计与优化

基于YOLO的人群密度检测系统设计与优化

1. 项目概述人群密度检测系统是计算机视觉领域一个极具实用价值的研究方向。这套基于YOLO系列模型的解决方案,能够实时统计监控画面中的人群数量,并判断拥挤程度。我在实际部署中发现,相比传统的光流法或特征点检测方案,YOLO架构在…

2026/7/25 4:29:58阅读更多 →
数据标注中的边缘案例处理与模型鲁棒性提升

数据标注中的边缘案例处理与模型鲁棒性提升

1. 数据标注中的边缘案例处理:为什么它如此重要在计算机视觉和机器学习项目中,数据标注质量直接影响模型性能。但真正考验模型鲁棒性的,往往是那些占比不足5%的边缘案例(Edge Cases)。这些特殊场景就像考试中的附加题—…

2026/7/25 4:29:58阅读更多 →
自然语言处理笔记002----字符串处理

自然语言处理笔记002----字符串处理

NLP处理的对象是文本字符串内容,一般来讲,文本基本都是有字符串构成的。文本基本上也是由字符串组成的。1.lstrip rstrip strip--->去掉特殊字符,包括空格,换行符等import numpy as np s" hello,我是风清扬&#xff0c…

2026/7/25 4:27:56阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 1:01:14阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 1:01:14阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/25 1:01:14阅读更多 →
突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:01:16阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:01:16阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:01:16阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/24 23:01:03阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/24 19:00:40阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/24 19:00:40阅读更多 →