数组:

数组是一系列相同类型的有序数据的集合,数组中的每一个元素都是同一个数据类型,所有元素共用一个名字,用下标来区别数组中的每一个元素。

C语言中,数组属于构造数据类型。一个数组中含有多个数组元素,每一个数组元素都是一个普通变量。根据数组中存放的数据类型,数组可分为:数值数组、字符数组、指针数组、结构体数组等。

一维数组:

数组中每个元素只带有一个下标时,称为一维数组。

一维数组是最基本的数据结构。
对数组中的每一个数据的称呼,可以是数组元素、数组分量,或者下标分量。
每个数组元素由所在的位置序号来区分,位置序号称为数组元素的下标。每一个数组元素都是一个相对独立的变量,其实,对数组的操作,往往要转换成对其中数据元素的操作。

一维数组的定义方式:

类型标识符 数组名[元素个数];
int arr[7];
定义了一个名为arr的整型数组,数组中有7个元素。

数组元素的有序性:

并不是说数组中各个元素值的大小有序,而是同一个数组的数组元素在内存中的存储空间是连续的,按照数组元素的下标从小到大依次存放。其中,数组名代表该数组的首地址,例如上例中,arr是数组名,代表数组在内存中的首地址,因为数组元素依次存放,所以如果知道首地址,可以推断出数组中每个元素的地址。

数组元素首地址 = 数组首地址 + 元素下标 * sizeof(数组类型)

arr[3] = 2000 + 3 * 4 = 2012

说明:
  • 类型标识符说明数组元素的类型,可以是int、long、char、float、double等。
  • 数组名的命名规则与变量的命名规则相同,遵循标识符的命名规则。
  • 数组元素的下标从0开始,所以arr[0]为第一个元素,arr[6]为该数组的最后一个元素。
  • “元素个数”即数组长度,只能是一个整型表达式,可以是符号常量。
  • C语言不允许使用变量定义长度不定的动态数组,所以“元素个数”中不能包括变量。
  • 定义数组时,数组元素两边一定是方括号,写成括号和花括号是不合法的。
  • 和变量一样,可以在一个类型声明中声明多个数组。如:double a[6],b[7];也可以变量和数组进行混合声明。如:int n,a[10];

一维数组元素的引用:

定义了数组之后,才可以引用其中的元素。
C语言规定:只能引用数组中的元素,而不能利用数组名来整体引用一个数组。

对数组元素的引用形式数组名和方括号中的下标组成,即:数组名[下标]。

下标:数组元素在数组中的顺序号,用于区分每个数组元素,指明要操作哪个数组元素,整型的任何表达式都可以作为数组下标出现。
下标的范围为:从0到元素个数-1。
程序中,数组的各个元素和普通变量一样,可以参与各种C语言操作,如:被赋值、参与计算、输入输出等。
根据数组的有序性,对于数组元素的处理,往往使用循环来实现,尤其是计数循环for语句更适合于实现对数组的操作:将循环控制变量作为数组下标依次对数组元素进行存取。

一维数组的初始化:

C语言允许在定义数组时为数组赋初值,称之为数组的初始化。

一维数组初始化的形式:

类型标识符 数组名[元素个数] = {初值列表};

说明:

  • 初值列表是一个用逗号分隔开的数组元素初值表,这些值都是常量的形式。
  • 初值表中常量的类型必须与类型说明符一致。
  • 初始化的顺序为:按照初值表中值的顺序依次存入数组的各个元素中。

对一维数组进行初始化有以下几种方法:

  • 在定义数组时,对数组中的全部元素赋初值。
  • 在定义数组时,对部分数组元素赋初值。
  • 对全部数组元素赋初值时,可省略数组长度,系统自动确定。

通常情况下,未初始化的数组只是在内存中分配了指定大小的存储空间,但每个存储空间中的初值是不可知的。
未初始化的数组,初值是没有意义的值。
如果指定的初值元素个数比数组元素个数少,剩下的全部被赋为0。
数组可以初始化,也可以用赋值语句或输入语句为数组元素指定初值。两者的区别是:初始化是在编译阶段完成的,而赋值语句和输入语句都是在运行时完成的。

【C语言】-一维数组的更多相关文章

  1. C语言一维数组、二维数组、结构体的初始化

    C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始 ...

  2. C语言一维数组中的数据随机排列

    #include <stdio.h>#include <stdlib.h> void randomlize(int *a, int n){        int i = 0,j ...

  3. 【C语言疯狂讲义】(八)C语言一维数组

    1.数组的基本概念: 同样类型    若干个     有序 由若干个同样类型的数据组成的有序的集合 有序:存储地址连续 下标连续 数组名:用来存放数组首地址的变量 数组元素:构成数组的每个数据 数组的 ...

  4. C语言一维数组转换为二维数组

    一维转二维代码示例: #include <stdio.h> #include <stdlib.h> #define ROW 3 #define COL 2 int main(i ...

  5. C语言一维数组定义及引用时括号[]内容

    一维数组定义:数组名[常量表达式] 一维数组引用:数组名[整型常量或整型表达式] *说明:常量表达式 > 整型表达式 > 整型常量 #define N 100 宏定义没有具体的数据类型, ...

  6. C语言 一维数组叠加为二维数组样例

    这里参看memcpy的用法,将一个一维整型数组不停的叠加为二维数组 使用宏定义来控制二维数组的行列 代码如下: #include <stdio.h> #include <stdlib ...

  7. java语言一维数组,对象数组

    /** * 对象数组的使用 */package com.test5; import java.io.BufferedReader;import java.io.InputStream;import j ...

  8. C语言--一维数组,字符数组

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zuoyou1314/article/details/30799519 watermark/2/tex ...

  9. Go语言 一维数组的使用

    程序源码 package main import ( "fmt" // 导入 fmt 包,打印字符串是需要用到 ) func main() { // 声明 main 主函数 var ...

  10. C语言一维数组复制

    /* * 通过自定义的函数memcpy实现复制功能,优点是不需要引用库函数 * 在windows平台下,通过sizeof测试发现: int 4字节 float 4字节 double 8字节 */ #i ...

随机推荐

  1. “LC.exe已退出,代码为-1错误”解决办法

    有的时间,在项目中编辑运行以后,竟然出错了,错误提示就是: “LC.exe”已退出,代码为 -1. 具体解决方法如下: 因为证书的原因,把项目中“properties”目录下的“license.lic ...

  2. IP地址分类及私网IP

    5类IP地址: IP地址共有32位字节,其中A~C类IP地址由类标识号.网络地址和主机地址组成,A类标识最高位为0,网络地址为1字节,主机地址为3字节, B类标识最高位为10,网络地址为2字节,主机地 ...

  3. 百度地图api经纬度气死我了!

      百度地图api经纬度气死我了! 百度地图官网api中例子的经纬度.我测试了2天才好用.一直是不能用.坑死我了.原来是获取的经纬度.和实际调用的经纬度尽然是反的.调转过来就好用了.气死我了.弄了两天 ...

  4. POJ 1166 The Clocks (爆搜 || 高斯消元)

    题目链接 题意: 输入提供9个钟表的位置(钟表的位置只能是0点.3点.6点.9点,分别用0.1.2.3)表示.而题目又提供了9的步骤表示可以用来调正钟的位置,例如1 ABDE表示此步可以在第一.二.四 ...

  5. Jqgrid入门-别具特色的Pager Bar (四)

    Pager Bar位于表格最下边.默认情况下,分为三部分.如图: 第一部分:导航按钮栏(Navigator) 第二部分:页码栏(Pager) 第三部分:记录信息栏(Record)         要实 ...

  6. 求双连通分量的详解。(根据刘汝佳的训练指南p314)

    无向图的双连通分量 点-双连通图:一个连通的无向图内部没有割点,那么该图是点-双连通图.         注意:孤立点,以及两点一边这两种图都是点-双连通的.因为它们都是内部无割点. 边-双连通图:一 ...

  7. GBDT(Gradient Boosting Decision Tree)算法&协同过滤算法

    GBDT(Gradient Boosting Decision Tree)算法参考:http://blog.csdn.net/dark_scope/article/details/24863289 理 ...

  8. 函数与关系实例,函数运算与SQL,试验与关系元组

    函数是一个集合,它的每个元素都是二元组或多元组.例如 f = { (x, y) | x∈R & y∈R & y = 2x } ,g = { (x, y, z) | (x, y, z)∈ ...

  9. linux面试题2

    1. 在Linux系统中,以文件的方式访问设备 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统 3. Linux文件系统中每个文件用inode来标识 4.  链接分为 ...

  10. Android-监听sdcard状态

    public class MyService extends Service { private static final String TAG = "MyService"; Fi ...