总结C语言中的数组知识点 数组只能存放一种数据类型比如int类型的数组、float类型的数组里面存放的数据称为“元素”。数组的定义首先声明数组的类型然后声明数组元素的个数也就是定义需要多少存储空间。数组格式与初始化格式元素类型 数组名[元素个数];比如int[3];数组元素有顺序之分每个元素都有一个唯一的下标索引而且都是从0开始。数组中第i个元素的访问方式:a[i]数组元素的初始化int a[3] {10, 9, 6};int a[3] {10,9};int a {11, 7, 6};int a[4] {[1]11,[0] 7};里面的个数必须是一个固定值可以是常量(比如6、8)、常量表达式(比如34、5*7)。绝对不能使用变量或者变量表达式来表示元素个数大多数情况下不要省略元素个数当数组作为函数的形参和数组初始化时除外。C语言中编译器是不会对数组下标越界进行检查的所以自己访问数组元素时要注意。一维数组数组的内存细节分析#includeint main{char cs[5] {a,A,D,e,f};printf(%p\n,cs); // 数组名就代表数组的地址for (int i 0; i{printf(cs[%d]的地址是:%p\n,i ,cs[i]);}return 0;}上面代码中地址分配分析如下一维数组的元素作为函数实参与同类型的简单变量作为实参一样是单向的值传递即数组元素的值传给形参从而形参是改变不影响实参。数组名代表着整个数组的地址如果一维数组的名字作为函数实参传递的是整个数组即形参数组和实参数组完全相同是存放在同一存储空间的同一个数组。这样形参数组修改时实参数组也同时被修改了。形参数组的元素个数可以省略。// b是test函数的形参(形式参数)voidtest(int b){b 9;}intmain{int a[3];a[0] 10;printf(函数调用前的a[0]%d\n, a[0]);test(a[0]); // a[0]是test函数的实参(实际参数)printf(函数调用后的a[0]%d, a[0]);return0;}#include//数组作为函数参数可以省略元素个数//数组作为函数参数传递是整个数组的地址修改了函数形参数组元素的值会影响到外面的实参数组void change(int array[]){printf(array %p\n,array);array[0] 100;}int main{int ages[6] {10,11,13,15,11,18};printf(array %p\n,ages);change(ages);printf(%d\n,ages[0]);return 0;}输出结果为array 0x7fff5be26c00array 0x7fff5be26c00100数组的小练习找最大值/*设计一个函数找出整型数组元素的最大值*/#includeintmaxOfArray(color:#ff0000;intarray[], int length){color:#ff0000;// 数组当做函数参数传递时会当做指针变量来使用指针变量在64bit编译器环境下占据8个字节//int size sizeof(array);//printf(array%d\n, size);//sizeof(array);// 1.定义一个变量存储最大值(默认就是首元素)int max array[0];// 2.遍历所有元素找出最大值for (int i 1; i{// 如果当前元素大于max就用当前元素覆盖maxif (array[i] max){max array[i];}}return max;}intmain{int ages {11, 90, 67, 150, 78, 60, 70, 89, 100};int ages2 {11, 90, 67, 150, 78, 60, 70, 89, 100};//int size sizeof(ages);//printf(ages%d\n, size);int max maxOfArray(ages, color:#ff0000;sizeof(ages)/sizeof(int));printf(%d\n, max);return0;}二维数组一个数组能表示一个班人的年龄如果想表示很多班呢二维数组是一个特殊的一维数组它的元素是一维数组。例如int a可以看作由一维数组a和一维数组a组成这两个一维数组都包含了3个int类型的元素。定义形式类型 数组名[ 行数] [列数]int a[2][3]; //2行3列的二维数组二维数组的存放顺序是按行存放的先存放第一行的元素再存放第2行的元素。例如int a的存放顺序是a[0][0] → a[0][1] → a[0][2] → a[1][0] → a[1][1] → a[1][2]二维数组的内存存储分配注意a、a也是数组是一维数组而且a、a就是数组名因此a、a就代表着这个一维数组的地址。二维数组的初始化int ages2[3][5] {{10, 11, 90, 89, 70},{10, 11, 90, 89, 70},{10, 11, 90, 89, 70}};

相关新闻

最新新闻

C++实战:高性能民宿数据分析与可视化系统开发全解析

C++实战:高性能民宿数据分析与可视化系统开发全解析

1. 项目概述:从数据到洞察,一个C开发者的实战复盘最近几年,民宿行业的数据化运营需求越来越强。房东想了解房源表现,平台想优化推荐策略,市场分析师想洞察区域趋势,这些需求都指向一个核心:如何…

2026/7/22 4:22:04
金狮金盾鹏保宝点盾云加密视频去检测翻录录屏工具

金狮金盾鹏保宝点盾云加密视频去检测翻录录屏工具

这款录屏程序运用独有底层调用方案启动录制功能,能够绕过绝大多数加密播放器的进程反录屏检测。程序做了防破解加壳处理,容易被杀毒软件误报,软件本身不存在安全风险,运行前可暂时关闭杀毒软件。软件实行一机一码授权,…

2026/7/22 4:22:04
Ubuntu宿主机中的VMWare选项「可移动设备」整体灰色不可点击

Ubuntu宿主机中的VMWare选项「可移动设备」整体灰色不可点击

在 Ubuntu 宿主机上 90% 的场景由三个核心原因导致,按概率从高到低依次排查即可解决。步骤1:启动 VMware USB 仲裁服务(最常见,优先执行) USB 设备直通的核心调度服务未运行时,可移动设备菜单会完全灰色。U…

2026/7/22 4:22:04
wvp-GB28181-pro:如何构建企业级国标视频监控平台?

wvp-GB28181-pro:如何构建企业级国标视频监控平台?

wvp-GB28181-pro:如何构建企业级国标视频监控平台? 【免费下载链接】wvp-GB28181-pro 基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接…

2026/7/22 4:22:04
2步速通Langchain消息结构

2步速通Langchain消息结构

1.消息角色和格式SystemMessage 系统消息 开发者设定:AI 是谁、能干啥、不能干啥、输出格式、语气、专业规则。HumanMessage 用户消息 普通人提问、需求、问题。AIMessage AI 回复 大模型返回的内容。xxxxxMeseage(contentabcacbabc)通常把3个消息存于一个列表中作为…

2026/7/22 4:22:04
“非黑即白“的抉择:渲染队列里,AlphaTest 究竟为何而生?

“非黑即白“的抉择:渲染队列里,AlphaTest 究竟为何而生?

引子:小明的"中间地带"之惑 小明已经看懂了渲染队列这套"分层的江湖秩序",也明白了 2450 这个数字的巧妙位置。可有一个成员,始终让他觉得"面目模糊、来历不明"——那就是夹在不透明和半透明之间的 AlphaTest(2450)。 他越想越觉得别扭:…

2026/7/22 4:17:03

月新闻