C语言基础:数组概念与一维数组详解
创作时间:
作者:
@小白创作中心
C语言基础:数组概念与一维数组详解
引用
CSDN
1.
https://blog.csdn.net/m0_74147998/article/details/145670807
本篇文章将详细介绍C语言中数组的概念以及一维数组的使用方法。通过本文的学习,你将掌握数组的基本概念、一维数组的定义、初始化、访问方式,并通过具体案例加深理解。
数组概念
什么是数组
数组是相同数据类型的有序集合。在内存中,数组中的元素是连续存储的。
数组的特征
- 数组中的每个元素被称为数组的元素,它们具有相同的类型。
- 数组中的元素在内存中是连续存储的。例如,
char player_name[6]会申请6个连续的基于char类型的内存空间。 - 数组中的元素可以通过下标(索引)来访问。下标代表了元素距离数组第一个元素的偏移量,数组的下标从0开始。
- 数组中元素的地址值随着下标的增大而增大。
一维数组
数组的定义
语法:
类型说明符/数据类型 数组名[数组的容量];
说明:
- 数组的类型由其元素的类型决定。
- 数组名遵循标识符命名规则,不能以数字开头,只能包含数字、字母和下划线。
- 数组的容量必须是整型常量或常量表达式,不能是变量。
示例:
#define SIZE 4
int arr[SIZE]; // 符号常量
int size = 4;
int arr[size]; // 常量
int arr[4]; // 常量
int lcd[800*480]; // 常量表达式
数组的初始化
数组初始化是在定义数组的同时给数组元素赋值,可以简化后续的赋值操作。
语法:
数据类型 数组名[数据容量] = {常量1,常量2,常量3,...}
注意事项:
- 数组可以部分初始化,未初始化的元素会被系统自动初始化为0。
- 如果定义数组时未指定数据容量,系统会根据初始化元素的个数来决定数组容量。
示例:
int arr[10] = {11,12,13,14,15}; // 推荐写法
int arr[] = {11,12,13,14,15}; // 推荐写法
数组元素的访问
数组元素的访问必须通过下标进行,且不能越界。
访问方式:
数组名[下标];
示例:
int arr[10];
arr[0] = 89;
int a = arr[0];
int c = arr[9];
int b = arr[10]; // error, 下标越界
数组的长度计算
数组的长度可以通过以下方式计算:
int len = sizeof(arr) / sizeof(arr[0]);
一维数组案例
案例1:数组元素赋值与逆序输出
需求:利用循环给数组元素a[0]~`a[9]`赋值0到9,并逆序输出。
代码:
#include <stdio.h>
int main(int argc,char *argv[])
{
int a[10];
int len = sizeof(a) / sizeof(int);
for(int i = 0; i< len;i++)
{
a[i] = i;
}
for(int j = len - 1;j >= 0;j--)
{
printf("%4d",a[j]);
}
printf("\n");
return 0;
}
案例2:斐波那契数列
需求:生成斐波那契数列并输出。
代码:
#include <stdio.h>
int main(int argc,char *argv[])
{
int i;
int f[20] = {1,1};
int len = sizeof(f) / sizeof(f[0]);
for(i = 2;i < len; i++)
{
f[i] = f[i-2]+f[i-1];
}
for(i = 0; i < len; i++)
{
if(i % 5 == 0)
{
printf("\n");
}
printf("%8d",f[i]);
}
printf("\n");
return 0;
}
案例3:计算某天是该年的第几天
需求:从键盘输入年、月、日,计算并输出该日是该年的第几天。
代码:
#include <stdio.h>
int main(int argc,char *argv[])
{
int t[] = {31,0,31,30,31,30,31,31,30,31,30,31};
int year,month,day;
printf("请输入年份、月份、天:\n");
scanf("%d-%d-%d",&year,&month,&day);
if((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
t[1] = 29;
else
t[1] = 28;
int sum = day;
for(int k = 0; k < month - 1; k++)
{
sum += t[k];
}
printf("%d月%d日是%d年第%d天。\n",month,day,year,sum);
return 0;
}
通过以上案例,读者可以更深入地理解一维数组的使用方法和应用场景。
热门推荐
散文诗写作技巧:从感受细节到结构布局
白鹅潭商务区:万象城领衔,引爆广州经济新高地
刘少军院士:鱼类遗传育种领域的开拓者
益生菌冻干粉:科学调理肠道,五大功效守护健康
科技创新考核权重提升至30% 山东省属企业持续加大研发投入
纳豆激酶:全方位守护你的健康
遗像处理:祠堂还是神龛?传统文化的传承与创新
补充蛋白质正当时:中老年人春季必吃的六种食材
最新社保政策红利释放,中小企业社保管理这样做
贷款买车怎么选?信用卡、银行、汽车金融公司优劣对比
SpaceX火箭故障致NASA木星探测任务面临延期
近年来首次!四大行定期存款占比均超50%
意甲保级关键战:都灵主场迎战“送分童子”帕尔马
亿万富豪炼成记:金融投资、科技创新与五大成功特质
产后多汗中医辨证治疗,妈妈们快看过来!
黄河九曲抱关来
血尿酸540μmol/L以下可先不用药,高尿酸治疗标准来了
慢阻肺发病率攀升,专家详解病因、预防和治疗方案
冬季养生有讲究:养肾养胃养神,黑色食材是关键
让比喻点亮你的散文:三种比喻手法详解与运用技巧
血友病:从“皇室病”到可治疗,基因疗法带来新希望
俄罗斯成功研发mRNA癌症疫苗,2025年将免费接种
《追风者2》预热宣发,五大主演被爆回归,李沁或将喜提新角色
糖化白蛋白:揭秘糖尿病真相的新指标
家常美味,手把手教你做烧麦
2024年立秋:60年一遇的四大特点,你了解多少?
丝绸之路上的棉花传奇:从印度到中国的文化之旅
《追风者》:民国金融风云下的小人物成长记
秋季食蟹指南:生姜紫苏葱,中和寒性保健康
国内唯一状元文化建筑落户天目湖,展现1300年文化史