zoukankan      html  css  js  c++  java
  • 19-一维数组的初始化和引用方式

    1、一维数组的初始化方式

      数组初始化赋值是指数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。

      初始化方式有两种:1) 定义的同时初始化  2) 先定义,后初始化。

    (1) 定义的同时初始化

      常见形式为:

      类型说明符  数组名[常量表达式] = {值1, 值2, 值3, ..., 值n};

    其中在{}中的各数据值即为各元素的初值,各值之间用逗号间隔。例如:int a[3] = {1, 2, 3};

      又细分为以下几种情况:

      1> 指定元素个数的同时,对所有的元素进行显式的初始化

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

      2> 指定数组的元素个数,对数组进行部分显式初始化

        定义的同时对数组进行初始化,没有显式初始化的元素,那么系统会自动将其初始化为0

        int nums[10] = {1, 2};

      3> 不指定元素个数,定义的同时初始化,它是根据大括号中元素的个数来确定数组元素的个数。

        int nums[] = {1, 2, 3, 9, 5};

      4> 指定元素个数, 同时给指定元素进行初始化

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

      给数组赋值的方法除了用赋值语句对数组元素逐个赋值外,还可采用初始化赋值和动态赋值的方法。

    注意:

     
     
    (2) 先定义,后初始化
    1 //先定义数组,然后对数组进行初始化
    2 //使用常量作为元素个数
    3 int a[3];
    4 a[0] = 1;
    5 a[1] = 4;
    6 a[2] = 3;
    1 //使用变量作为元素个数:C99不支持使用变量作为元素个数,但LLVM编译器支持
    2 int len = 5;
    3 int scores[len];
    4 scores[0] = 87;
    5 scores[1] = 34;
    6 scores[2] = 12;
    7 scores[3] = 45;
    8 scores[4] = 56;

    关于数组的几个让人疑惑的问题

    (1) 数组如果没有进行初始化,数组中到底有没有值?啥东西?

      1> 整型数组

      2> 实型数组

      3> 字符数组

    结论:如果定义数组后,没有初始化,数组中是有值的,是随机产生的垃圾值,所以如果想要正确地使用数组必须进行初始化。

    (2)数组如果部分初始化,那么没有初始化的元素是什么?

    整型

    实型

    字符型

    结论:对于整型、实型数组来说,一旦有元素被初始化,其他元素都被赋值0,字符型的还是随机的垃圾值。 

    思考&实现1: 通过for循环,从键盘获取10个数,存放到数组中。

    思路:循环10,下标从0-9;   每次从键盘获取一个值,放到arr[i]

     1 #include <stdio.h>
     2 int main(int argc, const char * argv[])
     3 {
     4     int arr[10];
     5     //从键盘获取数组元素
     6     for(int i = 0; i < 10; i++)
     7     {
     8         //输入数组元素,用空格或回车或tab隔开
     9         scanf("%d", &arr[i]);
    10     }
    11     //遍历数组元素并打印出来
    12     for(int i = 0; i < 10; i++)
    13     {
    14         printf("%d ", arr[i]);
    15     }
    16     return 0;
    17 }

    2、一维数组的引用方式

    数组元素是组成数组的基本单元。数组元素也是一种变量,其标识方法为数组名后跟一个下标。

    下标表示元素在数组中的顺序号

    数组元素访问一般形式为: 数组名[下标]

    其中下标只能为整型常量或整型表达式。

    例如:a[3]   a[i+j]  a[i++]   都是合法的数组元素

    数组元素通常也称为下标变量。必须先定义数组,才能使用下标变量。

    在C语言中,只能逐个使用下标变量,而不是一次引用整个数组。

    思考&实现2: 通过for循环,打印数组元素

     1 #include <stdio.h>
     2 int main(int argc, const char * argv[])
     3 {
     4     char ch[5] = {'a', 'b', 'e', 'r', 'o'};
     5     //遍历数组元素并打印出来
     6     for(int i = 0; i < 5; i++)
     7     {
     8         printf("%c ", ch[i]);
     9     }
    10     return 0;
    11 }

    下面是错误的写法(此处通过数组名不能获取整个数组内容)

    思考&实现3: 通过for循环,从键盘获取10个数,存放到数组中。并使用for循环输出查看 

     1 #include <stdio.h>
     2 int main(int argc, const char * argv[])
     3 {
     4     int arr[10];
     5     //从键盘获取数组元素
     6     for(int i = 0; i < 10; i++)
     7     {
     8         //输入数组元素,用空格或回车或tab隔开
     9         scanf("%d", &arr[i]);
    10     }
    11     //遍历数组元素并打印出来
    12     for(int i = 0; i < 10; i++)
    13     {
    14         printf("%d ", arr[i]);
    15     }
    16     return 0;

    思考&实现4: 通过for循环,从键盘获取10个数,存放到数组中。并使用for循环输出查看 (按倒序输出)

     1 #include <stdio.h>
     2 int main(int argc, const char * argv[])
     3 {
     4     int arr[10];
     5     //从键盘获取数组元素
     6     for(int i = 0; i < 10; i++)
     7     {
     8         //输入数组元素,用空格或回车或tab隔开
     9         scanf("%d", &arr[i]);
    10     }
    11     //遍历数组元素并打印出来
    12     for(int i = 9; i >= 0; i--)
    13     {
    14         printf("%d ", arr[i]);
    15     }
    16     return 0;
    17 }



    人生之路,不忘初心,勿忘始终!
  • 相关阅读:
    只想能成为一个欢喜善良的人,别无所求。
    sickbaby 暗地病孩子
    objectc基础之二:property,assign,copy,retain,release
    Objectc基础之一:#import,NSLog(),数据类型
    Objectc基础之四:预定义,条件编译,数组
    初探NodeJs
    ActiveMQ安装与测试
    Objectc基础之三:面对对象开发@interface,@implementation
    iphoneCocos2D游戏开发之一:游戏术语大解析
    Nginx的gzip配置参数说明
  • 原文地址:https://www.cnblogs.com/xdl745464047/p/4003765.html
Copyright © 2011-2022 走看看