C语言程序——数组(1)
目录
一、一维数组
二、一堆数组的赋值
数组是一组同类型的数据项的有序集合,其中每个数据项称为“数组元素”,这些数组元素的数据类型称为数组的“基类型”,而且这些数组元素按顺序存放在一片连续的存储单元里,数组对象整体有一个名称,这个名称称为“数组名”,通过数组名和整数表示的下标可以表示相应的数组单元中的数组元素。
一、一维数组
仅用一个下标编号即可确定指定数组元素的数组就是一维数组,而需要一个以上的下标编号的数组称为多维数组。
1、一维数组的定义
一维数组定义形式如下:
【存储类型符】 数据类型符 数组变量名【整型常量表达式】;
·存储类型符表示数组中各元素的存储类型。
·数据类型符表示数组元素的数据类型,可以是任何数据类型。如float,int等。
·数组变量名其命名规则与变量名相同,要符合c语言标识符的命名规则。
·数组变量名后面的“【】”是数组的标志。“【】”之间必须是整型常量或者整型常量表达式。
数组定义示例:
int a[10]; //定义了有10个数据元素的int型数组a
int f[20]; //定义了有20个数据元素的float型数组f
数组定义后,系统将给其分配一定大小的内存单元,其所存的内存单元大小与数组元素的类型和数组的长度有关,计算数组所存内存单元的字节数公式如下:
数组所存单元的字节数=数组大小 × sizeof(数组元素类型)
如:short int a[20];则数组a所占内存单元大小为20×sizeof(short)=20×2=40(字节)。
2、一堆数组的引用
c语言规定,数组是一种数据单元的序列,不可直接存取整个数组,只能引用数组中各个数据单元。引用数据单元的格式为:
数组变量名[下标]
其中,下标可以是整型变量、整型变量或整型表达式。c语言规定,下标的最小值是0,最大值则是数组大小减一。
数组定义后,数组中的每一个元素其实就相当于一个变量,所以有时也把数组元素称为下标变量。如:
a[0]=2; //将数组a的第一个元素赋值为2a[1]=4; //将数组a的第二个元素赋值为4a[2]=a[0]+a[1] //将数组a的第一个元素的值与第二个元素的值相加赋给第三个元素(值为6)
实际上,我们在引用数组单元时用到了下标运算符[ ],它时优先级最高的运算符之一。c系统会根据以下公式,用下标值计算出要引用的“存储单元的有效地址”。
有效地址=数组的起始地址+下标×sizeof(数组元素类型)
二、一堆数组的赋值
对一维数组赋值通常有两种方法,一种是在数组定义时赋初值,另一种是先定义数组然后在程序中再对数组元素逐一赋值 。
1、初始化赋值
定义数组时,对数组变量赋初始值:
数据类型符 数组变量名[常量表达式]={表达式1,表达式2,...,表达式n};
· 表达式的个数不能超过数组变量的大小。
·如果表达式的个数小于数组的大小,则未指定值的数组元素被赋值为0.如:
int a[10]={0,1,2,3,4}
经过定义和初始化后,a的前五个单元分别赋值成0,1,2,3,4,而其余单元默认为0.
2、一堆数组在程序中赋值
c语言除了在定义数组变量时使用初值列表对数组整体赋值以外,无法再对数组变量进行整体赋值。
(1)使用赋值语句逐一赋值。
这种方法较为简单粗暴,适用于长度较小的数组元素赋值,或对长度较大的数组部分元素赋值。如:
int a[4];
a[0]=1;a[1]=2;a[3]=3; //将数组a的4个元素分别赋值为1、2、3、4.
(2)使用循环语句进行赋值
此方法较为普遍常见,适用于某数组元素进行有规律的赋值或接受用户通过键盘输入对数组元素的赋值。如:
int a[10],i;
for(i=0;i<10;i++)
a[i]=2*i+1;
亦或是
int a[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
但切记不可用scanf对数组进行所谓整体输入。如:
int a[3];
scanf("%d%d%d",a);
这是错误的 。
C语言程序——数组(1)相关推荐
- C语言程序——数组(2)
目录 一.二维数组 二.二维数组的赋值 三.二维数组在程序中赋值 前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量.而在很多实际问题中有很多量是多维的.而多维数组元素有多个下标,以 ...
- Go语言程序的数组初始化
Go语言数组初始化是最基本的编程训练.通过这个例子可以知道多维数组的初始化,需要注意的是格式. Go语言程序: // array project main.go package mainimport ...
- c语言 数组放空自己,DS1307 C语言程序 - ds1307怎么使用(ds1307引脚图及功能_c语言程序及典型应用电路)...
DS1307 C语言程序 //******************************************************************** //************** ...
- 将一个数组中的值按逆序重新存放,编写C语言程序
将一个数组中的值按逆序重新存放,编写C语言程序: #include<stdio.h> int main() { int a[5]={8,6,5,4,1},i,b[5]; for(i=0;i ...
- c语言打印数组元素_C程序打印元素差为0或1的子集数
c语言打印数组元素 Given an array of integers, find and print the maximum number of integers you can select f ...
- 【头歌C语言程序与设计】字符数组
目录 写在前面 正文 第1关:字符逆序 第2关:字符统计 第3关:字符插入 第4关:字符串处理 第5关:字符串统计 第6关:字符串排序 写在最后 写在前面 本文代码是我自己所作,本人水平有限,可能部分 ...
- c语言程序与设计苏小红,c语言程序设计苏小红
<实验教学示范中心建设教材·国家精品课程主讲教材:C语言程序设计(第2版)>是一本兼具趣味性和实用性的C语言程序设计教材.全书由13章组成,内容包括:为什么要学C语言,C数据类型,简单的算 ...
- c语言程序做四则运算还要余数,大整数四则运算 高质量C语言程序.doc
大整数四则运算 高质量C语言程序 设计题目: 大整数的四则运算 1. 功能简介:编写出实现大整数之间相加,相减,相乘,相除的程序,并输出计算结构. 课程设计要求:采用模块化程序设计 源程序中应有足够的 ...
- c语言一维数组逆序输出_剑指信奥 | C 语言之兵人来袭!
趣乐博思剑指信奥系列 ❝ 趣乐博思剑指信奥系列,专门针对全国青少年信息学奥林匹克联赛 NOIP 而开展的专业教育方案.开设的课程有 C 语言基础,C++ 语言基础,算法设计入门与进阶,经典试题分析与详 ...
最新文章
- Redis低成本高可用方案设计
- RS-232串行口连接线 com口连接线 并口链接线 双绞线 交叉线 直连线
- Serverless 工程实践 | Serverless 应用优化与调试秘诀
- Android使用suspendCancellableCoroutine将回调转换为协程
- AbsoluteLayout(绝对布局)
- python 学习中遇到的问题(持续更新中)
- 任务管理平台_软件品质评测系统任务分发管理平台
- 5条简洁的JavaScript技巧
- Xbox360游戏收藏
- MongoDB小结26 - 地理空间索引
- Bithumb Global AMA丨Cred加速实现开放金融——打造区块链上蚂蚁金服
- 排查DHCP服务器故障
- 设计模式(4):生成器模式(Builder)
- 【css】让img图片居中显示
- 全面解决网站被攻击解决办法
- jQuery 教程 jQuery入门学习教程
- 魔兽延迟最低的服务器,魔兽世界延迟高解决方法
- 数据结构(一)--ArrayList and LinkerList
- Aqi计算首要污染物工具类
- 理解shell命名空间扩展
热门文章
- 关系代数运算之连接运算
- android百度地图定位、城市列表选择搜索
- matlab如何画曲线的切线,Matlab-如何在曲线上绘制切线
- 【转载】Python 骚操作:微信远程控制电脑
- 2021-10-24为什么变压器(三角,星)外接零序电压时,零序电抗为无穷大?
- 大小写字母转换问题: 将从键盘读入的小写字母转换成大写字母向屏幕输出,同时输出该大写字母的ASCII码值和所占的内存空间大小。(输入输出中的◊代表一个空格)输入一行:小写字母输出两行:第一
- matlab 数学建模 绘制颜色渐变的彩虹图
- 数据库复制表结构以及表数据
- 使用c语言实现一个简单的易语言
- 多线程之哲学家就餐问题(java代码含注释)