神奇的C语言数组(一维)

c语言的数组

       数组指的是相同数据类型的集合,说白了,就是把相同数据类型的数据集合在一起。例如:

 int arr1[10]={ 0 }, char arr3[10] = {'a'}

一维整型数组

一维数组的创建
         int arr[10]={ 0 };

        等号前面意思为创建一个int 型的数组arr,里面有十个元素,其元素的格式都为int 型,十个元素可以通过arr[0]~arr[9]来按顺序访问。

         注意:创建数组时方括号里面填写的是元素的个数,只能是常量或者用define定义的标识符。不能是变量!不能是变量!不能是变量!

一维数组的初始化

        等号后面的部分则为数组的初始化,数组的初始化有好多种方式:

        1、int arr[10]={ 0 }代表意思是将创建好的数组的所有元素都初始化为0;

        2、int arr[10]={1,2,3}代表将数组的前三个元素初始化为1,2,3,其他的都为随机值(为了不出现问题,我们一般在创建的数组的时候都会初始化整个数组的值);

        3、! ! !创建数组的时候如果只知道数组的所有元素,而懒得去算他有多少个元素的时候,可以这样进行创建:int arr[]={1,2,3} 其意思为创建一个元素为1,2,3的数组,其数组的大小也就随元素的个数设置为3。

一维数组的简单用法

        既然说数据组就是同类型的数据的集合,那么我们就可以通过使用  数组名[下标]  的方式使用每个元素,在使用每个元素时每个元素都是数组的类型,也就是可以当成数组类型的变量进行此类型的任何操作。注意:数组在创建时方括号里面填写的是数组的个数,但是在使用时,方括号里面填写的是元素下标,数组的下表是从0开始的,所以数组的第n个元素用 数组名[n-1] 表示。

        一般在进行改变数组元素的值啊,或者输出数组的元素时经常和for语句进行搭配使用会比较方便。

一维数组和指针

        C语言的数组神奇的地方就是用指针来使用数组。

        什么是指针变量?  指针则为指针变量,就是一个类型是指针类型的变量而已,它存的另一个内存单元的地址。

        首先一个数组的数组名其实就是一个指针,它指的是数组首元素的地址,所以直接解引用得出来的会是数组的第一个元素,但是一下情况要注意:

        1、&(取地址符)后面直接跟数组名值得是整个数组,其值会和数组的首元素的地址的值一样,但是如果同时加1的话会直接跳过整个数组。

        2、sizeof后面直接跟数组名指的是求整个数组的大小。

        !!!数组在内存中是以连续的内存空间存储的。例如:int 型数组  arr[0]的地址0x00000000  则arr[1]的地址为0x00000004   

       !!! 和数组类型相同的指针指向数组的某个元素,给其加一就会指向下一个元素,例如:int *p = &arr[1]  即p指向arr数组的第二个元素,那么p+1指向的就是arr[2],*(p+1)=arr[2]。

        其实计算机在用数组名加下标的方式进行使用数组时,本质时转化为指针使用的:

                int arr[10] = {0};

           !!重点预警!! 语句中我们知道arr是一个数组名,同时也是一个指针,那么我们可以得出一个结论:arr[1]和*(arr+1)是一样的。其实计算机在使用数组时就是先化成这样的方式,然后在进行调用的,那么 1[arr] 也是化为 *(arr+1),有加法的交换可得出 *(arr+1) 和 *(1+arr)  是一样的,所以我们也就可用  下标[数组名]  来表示数组中的元素了,即就是  arr[1]  和  1[arr]  是一样的,有没有让你感觉到很神奇?事实就是这样。

字符数组

字符数组的创建

            同理整型数组,字符数组就是将char型的变量放在一起

字符数组的初始化

            字符数组的初始化方式和整型一维数组的初始化方式是一摸一样,但是比整型数组还多了一种方式,如下:

            char arr[]="hello";

             但是这里我要介绍一下不同方式初始化的区别:

            char arr1[]={'h','e','l','l','o'};

            char arr2[]="hello";

            以上两种初始化方式看似相同,但实际却有着本质的差别:

            首先是第一种,arr1这种方式我们不难发现其和整型数组的初始化方式是一样的,因为,char型的数组,所以它的所有元素都是字符,需要用单引号括起来,那么这种方式初始化的字符数组就有五个元素,分别是 'h','e','l','l','o' 。其使用方式和整型数组的使用方式是一摸一样的。

            第二种初始化方式是一种字符串式的初始化方式,初始化完成之后arr2具有六个元素分别是 'h','e','l','l','o','\0'。'\0'字符被当作是字符串的结束标志。那么如果是着这样的话,这种初始化也就等价于:

            char arr3[]={'h','e','l','l','o','\0'};

 字符数组的使用方式

            如果是第一种方式初始化的字符数组,那么其使用方法和整型数组的使用方法毫无差别,就是类型不一样而已。

            第二种方式初始化的字符数组,也可以叫字符串,因为它有字符串结束标志。可能你会问这个结束标志 '\0' 有什么用呢?下面我就好好介绍一下字符串中重要的'\0':

            我们都知道当我们要打印一个数组所有元素都是用同一种方式,那就是将数组的每一个元素都进行打印,但是,如果是这样的话我们就需要知道什么时候就算这个数组已经完全打印,此时停止打印就完成我们需要的操作,但是,如果是第一种方式初始化的数组,我们就需要知道数组元素的个数,那么需要传入一个参数,那就是数组元素的个数,这样就无形之中增加了程序员的代码量。但如果是第二种初始化方式,那么就不需要这么麻烦了,因为它有一个 '\0' 元素,只要是对整个数组进行操作例如说打印,那么我就只需要将数组名传进函数,数组名也就是第一个元素的地址,我们通过  数组名+1  来对每个元素进行打印,知道碰到 '\0' 说明已经到了数组的最后一个元素,结束打印。

            也许你可能问,为什么要使用 '\0' 来作为字符串结束标志,用其它字符行不行?答案是不行的,因为如果用其他字符的话,万一字符串的内容本来就有这个字符怎么办?它不久相当于提前结束了么?而 '\0' 这个字符就是为字符串设计的,它打印不出来,生活也用不到。

            c语言的一维数组就介绍到这里。





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值