zoukankan      html  css  js  c++  java
  • c语言数组

    数组 

    一: 1、什么是数组?

        一组 相同类型 的 若干 个 有序 的数据集合

        2、数组的名词:

        1)数组名:带表一组相同类型若干个有序的数据集合()

        2) 数组元素:构成数组的每一个元素

        3)下标:数组是有序的,下标有序,用来标识每个元素在数组中的位置

        4)数组的维度: 元素下标的个数

        5)数组的长度:集合中元素的个数

        3、分类:

        1)按内容分类:数值型数组(整型、实型)、字符型数组、指针数组、构造数组

        2) 按维度分类:一维数组、二维数组、多维数组

    二: 1、一维数组的定义?

        格式:

        数据类型   数组名[长度];1+2  4+5

        int a[10];

        //定义了一个整型的数组a

        //另一种描述:定义了了一个长度为10,每个元素都只能存放int型数据的数组  数组名是a

        int 表示数组中每个元素的类型都必须是int型

        注意:

        1)a是数组的名称,a需要遵守标示符的命名规范

        (1)字母、数字、_ 、美元符号组成,不能以数字开头,不能和关键字重名,严格区分大小写

        2)数组长度不能使用变量,

        int n=5;  int arr[n]; //这种写法C规范不可以,但是Xcode可以

        原因:不能用定义数组的时候长度用变量同时初始化,如果定义数组的时候长度用变量的话,编译时并不会运行,编译器看到变量,同时初始化话的话,编译器不确定是否超出了数组长度范围

        3)数组长度可以使用宏定义

        #define N 5; int arr2[N+3];//这种写法是可以的

        4)数组名不能和其他变量重名

        int a;

        int a[10];错误

        5)可以一次定义多个数组

        int a[10],b1[3]; //表示定义了两个整型数组,第一个数组名a,能存放10个int型的数据,第二个数组 b1 能存放3个int型数据

        6)数组定义后,只能存放定义类型的数据

        int a[10]; 只能存放int型数据

        7)可以定义变量的同时,定义数组

        int a,b,arr[10];

    三:1、数组的初始化

        变量的初始化, 给变量赋初值

        数组的初始化,给数组中的每个元素都要进行初始化;

        2、数组的初始化的方法

        数组如果定义完成以后,没有进行初始化,这个时候,元素的值是随机数(垃圾值)

        初始化的格式:int 数组名[长度]={值1,值2,.....}

        1)定义的同时进行初始化     int a=10;

        (1)完全初始化

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

        注意:初始化数值得个数可以小于长度,但是不能大于长度

        不指定数组长度的完全初始化

        int a3[]={1,2,3}; //定义一个数组,数组的长度由初始化的元素的个数决定的

        误区:

        a3={1,2,3};   错误

        a3[]={1,3,4}; 错误

        (2)部分初始化

        int a1[5]={1};   //优先把1初始化给第一个元素

        指定元素的部分初始化

        int a2[5]={[2]=1,[4]=100};

        // 给第三个元素初始化为1  给第5个元素初始化为100

        2)先定义,后初始化

        误区:

        int a1[5];

        a1[]={1,2,3}; 错误的

        a1={1,2,3};   错误的

        正确用法:每个元素逐个进行初始化

        a1[0] = 10;

        a1[1] = 100;

        a1[2] = 1000;

        a1[3] = 10000;

        a1[4] = 1;

        a1[5] = 0; //错误的

        3、数组的引用

        数组的引用,其实就是获取数组中存储的内容

        可以通过数组下标,来访问数组中的每一个元素

        如果说数组长度为n , 下标的最大值 n-1,最小是 0

        如果说某个数组的下标最大值是n,数组最少有 n+1个元素

    四: 1、数组的存储方式

        //每个地址相差4个字节

        int a[3]={13,34,438};

        //数组的首地址 = a[0]的地址 = a

        //所以,数组名存放的实际上是数组的首地址

        2、数组的长度计算方法

        // 数组在内存中占用的字

        节数:sizeof(int)*n个数  = sizeof(数组名)

        3、访问数组的下标,超过了最大下标

        //约错了对象,越界程序会给出警告,但是不会报错,千万要注意越界

    五:数组与函数之间的关系:

        1)数组的元素作为函数的参数(传的是变量值,函数结束内存释放)

           函数的形参跟调用函数传得实参(必须是是相同的数据类型)

        注意:数组元素作为函数的参数,这是值传递

        2)数组名作为函数的参数(传的是地址是指针)

           因此可以修改原数组内的元素

        注意:

        1)数组名作为函数的参数,是地址的传递,在函数中可以直接修改数组的内容

        2)用数组名作为函数参数,会丢失数组长度,所以用数组名作为函数的参数,要传递数组名的同时,尽量把数组长度也传过去

        函数调用时传的数组地址求数组长度为8,因为它求的是指针在在内存中地址中占用的大小。而在main函数中则sizeof(数组名)求的是数组占用内存大小(具体不太明白)

        3)函数形参中定义的数组的长度,和实参数组的长度尽量保持一样,否则可能会有问题

        4)通常情况下形参的数组长度是不指定的,它的长度有实参的来决定的

        5)函数的形参数组的类型,要和实参数组的类型要一至

  • 相关阅读:
    java springboot连接两个数据源
    Android状态栏高度、虚拟操作栏高度
    Java代码实现两种数据库的数据迁移
    微信小程序生成海报
    【比较耗性能的一个东西】Firefox的LayoutReflow
    JS中关于带操作赋值的一个小问题
    js控制样式一个细节
    javascript中打开客户端,关于void的一个疑问
    项目管理日志05-01-05
    项目管理日志05-01-04
  • 原文地址:https://www.cnblogs.com/-boy/p/4035618.html
Copyright © 2011-2022 走看看