b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

数组的定义,初始化和使用,C语言数组的详细说明

电脑杂谈  发布时间:2020-04-20 17:04:21  来源:网络整理

c 数组初始化为0_一维数组的初始化方法_字符数组初始化为0

可以说,数组是迄今为止存储数据的第一个实际结构. 尽管较早学习的变量也可以存储数据,但是变量可以存储的数据非常有限. 不仅如此,数组和指针(将在后面讨论)是互补的,学习数组可以为学习指针奠定基础.

那么数组到底是什么?顾名思义,数组是许多数字的组合!那么对这些数字有什么要求,不管什么数字组合在一起,它都是一个数组吗?存储在同一数组中的数字必须满足以下两个条件: 这些数字的类型必须相同. 这些数字必须连续存储在内存中.

换句话说,数组是连续存储在内存中的相同类型数据的集合.

一维数组一维数组的定义如下:

类型说明符数组名称[常量表达式];

示例:

int a[5];

这意味着定义了一个整数数组,数组名称为a,定义的数组称为数组a. 数组名a不仅表示数组,而且还表示数组的第一个地址(该地址暂时不讨论,稍后将讨论指针).

这时,数组a中有5个元素,每个元素都是一个int变量,并且它们在内存中的地址是连续分配的. 也就是说,int变量占据4个字节的内存空间,然后5个int变量占据20字节的内存空间,并且它们的地址被连续分配.

这里的元素是变量的含义,而数组中的元素在传统上称为元素.

定义数组时,需要指定数组中元素的数量. 方括号中的常量表达式用于指定元素的数量. 数组中的元素数也称为数组的长度.

c 数组初始化为0_字符数组初始化为0_一维数组的初始化方法

由于数组中有多个元素,如何区分这些元素?该方法是通过对每个元素编号. 数组元素的数量也称为下标.

数组中的下标从0(而不是1)开始. 那么,如何用下标表示每个数组元素呢?通过“数组名[下标]”方法. 例如,“ int a [5];”表示定义了一个包含5个元素的数组a,这5个元素是[0],[1],[2],[3],[4]. 其中,[0],[1],[2],[3]和[4]分别代表这五个元素的变量名.

为什么下标从0开始而不是1?想象一下,如果从1开始,数组的第五个元素是[5],并且当数组定义为int a [5]时,两者都是[5],这很容易引起混淆. 下标从0开始时不存在此问题!因此,定义一个数组a [n],则该数组中元素的最大索引为n–1;元素a [i]表示数组a中的第i + 1个元素.

此外,方括号中的常量表达式可以是“数字常量表达式”或“符号常量表达式”. 但是无论表达式是什么,它都必须是常量,并且绝对不是变量. 通常,C语言不允许动态定义数组的长度. 换句话说,在程序运行期间,数组的大小不取决于变量的值. 异常情况是动态内存分配. 在这种情况下,可以动态定义数组的长度,这将在后面描述.

一维数组初始化可以使用以下方法实现一维数组初始化:

1)定义数组时,为所有元素分配初始值. 这称为“完全初始化”. 例如:

int a[5] = {1, 2, 3, 4, 5};

通过将数组元素的初始值放在一对大括号中,这样的初始化之后,[0] = 1; a [1] = 2; a [2] = 3; a [3] = 4; [4] = 5,它从左到右依次分配给每个元素. 应该注意的是,在初始化期间,元素之间用逗号而不是分号分隔.

2)您只能为几个元素分配值,这称为“不完全初始化”. 例如:

int a[5] = {1, 2};

已定义的数组a有5个元素,但在花括号中仅提供了两个初始值,这意味着仅初始化了前两个元素a [0]和a [1],而后三个元素是没有初始化. 如果未完全初始化,则未初始化的元素会自动设置为0.

c 数组初始化为0_字符数组初始化为0_一维数组的初始化方法

应注意,“未完成初始化”与“未完成初始化”不同. 如果“根本没有初始化”,即仅“ int a [5];”. 未初始化,则每个元素的值都不为0,并且所有元素均为垃圾值.

您也不能写“ int a [5] = {};”. 如果大括号中没有写任何内容,则这是一个非常严重的语法错误. 用大括号写至少一个数字. 例如,“ int a [5] = {0};”一维数组的初始化方法,这一次是为了使数组“零”,这时数组中的每个元素都是零. 此外,如果定义的数组的长度小于大括号中提供的初始值的数量,则它也是语法错误,例如“ a [2] = {1、2、3、4、5 };“.

3)如果在定义数组时为数组中的所有元素分配了初始值,则可能未指定数组的长度,因为已经确定了元素的数量. 我们在编程时经常使用这种书写方式,因为它很方便,不会有问题,也不需要自己计算几个元素. 系统将自动分配空间. 例如:

int a[5] = {1, 2, 3, 4, 5};

可以写为:

int a[] = {1, 2, 3, 4, 5};

在第二种书写方式中,大括号中有5个数字,因此系统将自动将数组a的长度定义为5. 但是,应注意的是,只有在定义数组时进行初始化时才能这样做. 如果在定义数组时未初始化,则省略数组长度是语法错误. 例如:

int a[];

然后它将在编译时提示错误,并且编译器将提示您未指定数组的长度.

这是每个人的简单程序:

# include <stdio.h>
int main(void)
{
    int a[5] = {1, 2, 3, 4, 5};
    int i;
    for (i=0; i<5; ++i)
    {
        printf("%d\n", a[i]);
    }
    return 0;
}

c 数组初始化为0_一维数组的初始化方法_字符数组初始化为0

输出为:

1

2

3

4

5

a表示数组的名称,[5]表示数组具有5个元素,并由[0],[1],[2],[3]和[4]表示]. 并在大括号中将1、2、3、4、5分配给变量a [0],a [1],a [2],a [3],a [4]. 同样,下标从0开始,即从[0]而不是[1]开始.

您还可以使用scanf从键盘手动初始化阵列:

# include <stdio.h>
int main(void)
{
    int a[5] = {0};  //数组清零初始化
    int i;
    printf("请输入5个数:");
    for (i=0; i<5; ++i)
    {
        scanf("%d", &a[i] );
    }
    for (i=0; i<5; ++i)
    {
        printf("%d\x20", a[i]);
    }
    printf("\n");
    return 0;
}

输出为:

请输入5个数字: 1 2 3 4 5

一维数组的初始化方法_c 数组初始化为0_字符数组初始化为0

1 2 3 4 5

与使用scanf向字符数组输入字符串不同. 您必须使用for循环来输入数字. 不用在输入字符串时使用循环,只需使用scanf.

一维数组元素的参考数组必须在使用前定义. C语言规定只能一一引用数组元素,而不能一次引用整个数组. 如前所述,数组元素的表示形式为:

数组名[下标]

下标可以是整数常量或整数表达式,例如:

a[0] = a[5] + a[7] - a[2 * 3]

请注意,定义数组时使用的“数组名称[常量表达式]”与引用数组元素时使用的“数组名称[下标]”有所不同. 定义数组时的常量表达式公式表示数组的长度,引用数组元素时的下标表示元素的编号. 例如:

# include <stdio.h>
int main(void)
{
    int a[5] = {1, 2, 3, 4, 5};  //定义长度为5的数组a
    int t;
    t = a[3];  /*引用数组a中下标为3的元素a[3], 此时的3不代表数组的长度*/
    printf("t = %d\n", t);
    return 0;
}   

输出为:

t = 4

“ int a [5];”是定义了5个元素的数组一维数组的初始化方法,这5个元素是[0],[1],[2],[3],[4]. t = a [3]中的a [3]不是数组,而是元素a [3].

因此,以下过程是错误的:

# include <stdio.h>
int main(void)
{
    int a[5];
    a[5] = {1, 2, 3, 4, 5};
    return 0;
}

错误的原因是,后面的[5]不是数组. 仅在定义时,“ [常数]”表示数组,方括号中的数字表示数组的长度. 除此之外,在程序中的任何位置都可以看到“ [constant]”不是数组,而只是数组的元素和变量. 这时,“ constant”表示元素的下标.

此外,当单独为元素分配值时,您不能添加括号,因为元素是变量,即[5]只是变量名. 如何在最前面为变量分配值就是现在如何为数组元素分配值,例如“ a [5] = 1;”. 但是对于上述程序,这仍然是错误的. 因为数组元素的下标从0开始,所以数组a的元素只是[0]〜a [4],而没有[5]元素.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-182590-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...