23深入理解C指针之---数组的基础
数组是c语言内置的数据结构,数组有一维数组、二维数组和多维数组。使用数组传递数组时,必须传入数组的大小。
一、数组的特征:阐明数组的特点
1、数组要素:
1)、数组类型:数组中存储的数据的类型;
2)、数组名称:数组名称只要符号表达式命名规则即可;
3)、数组大小:数组中数据的个数,数值写到[]中即可,若数组直接初始化也可以不写大小;
4)、数组标识:[],表达式后接上[]表明前面的表达式是数组的名称;
2、数组特征:
1)、数组的大小是固定的;
2)、数组名可以表示数组中第一个元素的地址;
3)、数组名也暗中包含了数组大大小,常常通过sizeof(arrName)/sizeof(arrType)获取数组中元素的个数;
1 #include <stdio.h> 2 3 int main(int argc, char **argv) 4 { 5 int arrInt[] = {1, 2, 3, 4, 5,}; 6 int size = sizeof(arrInt) / sizeof(int); 7 for(int i = 0; i < size; i++){ 8 printf("arrInt[%d]: %d\t", i, arrInt[i]); 9 } 10 11 return 0; 12 }
4)、可以通过数组索引随机访问数据元素,数组的索引从0开始,到size-1;
1 #include <stdio.h> 2 3 int main(int argc, char **argv) 4 { 5 int arrInt[] = {1, 2, 3, 4, 5,}; 6 int size = sizeof(arrInt) / sizeof(int); 7 for(int i = 0; i <= size - 1; i++){ 8 printf("arrInt[%d]: %d\t", i, arrInt[i]); 9 } 10 11 return 0; 12 }
5)、可以用数组名表示数组的地址;
1 #include <stdio.h> 2 3 int main(int argc, char **argv) 4 { 5 int arrInt[] = {1, 2, 3, 4, 5,}; 6 int size = sizeof(arrInt) / sizeof(int); 7 8 printf("The arrInt address: %p and arrInt[0] address: %p\n", &arrInt, &arrInt[0]); 9 10 for(int i = 0; i <= size - 1; i++){ 11 printf("arrInt[%d]: %d and address: %p\n", i, arrInt[i], &arrInt[i]); 12 } 13 14 return 0; 15 }
6)、数组可以有多维的,可以通过[]的个数确定数组的维数,第一维数字可以省略,其他的不能;
7)、一维数组可以表示一个向量;
8)、二维数组可以表示矩阵,通过行列来表示数据;
9)、数组中的元素会存储到连续的内存单元中,可以通过索引(下标)实现随机访问;
10)、二维数组中可以存在每行元素不同的不规则数组;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具