zoukankan      html  css  js  c++  java
  • 数组指针的用法

    数组指针的用法,用处。

    int *a[4]; //指针数组

    指针数组就相当于一次声明了多个指针。数组的每一个元素都是一个指针。很好理解,下面主要看数组指针

    int (*p)[4]; //数组指针

    数组指针就相当于一次声明了一个指针。只不过这个指针指向很特别,是一个数组。

    []优先级大于*,故数组指针声明时要加()。

    例1:

    复制代码
    #include<stdio.h>
    #include<stdlib.h>
    void main()
    {
        //数组指针的用法,用处。
        int b[16]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
        int (*p)[4]; //该语句是定义一个数组指针,指针步长为4个int即16位。
        //int *p2=&b;
        p=&b;
        int i=0;
        while(i<16)
        {
              printf("%d	",(*p)[i]);
              //printf("%d	",*p2++);
              i++;
        }
    }
    复制代码

    printf("%d ",(*p)[i]);遍历输出数组b;
    数组指针就相当于舞王僵尸一样,带了小弟,n就是小弟的个数,通过下标值能直接访问到具体哪一个小弟,即数组里哪一个数

    数组指针下标自增(i++)的时候,指针指向不变。

    这里直接用整形指针就可实现,而且更方便简洁。见上面被注释部分。

    例2:把例1的while()语句替换。

    复制代码
        while(i<4)
        {
              printf("%d	",(*p++)[0]);
              i++;
        }
    复制代码

    例2输出1 5 9 13,相当于指针一次移动了4个int.16个字节。


    数组指针自增(*p++)时,指针指向移动sizeof(类型)。

    其实上句在其他类型指针也适用。

    如int *p;

     //指针指向了int,就是整型指针,整型指针有啥特点?就是能保存整形变量的地址。有啥用途?就是p++的时候能指向下一个int型数。所以了?经常用指针指向一个数组。因为他们都是int型的,所以推导出步长了?整型指针的步长为sizeof(int),即4字节    

    //同理可以得出什么float型指针,char型指针什么的。。。    

    同理就得出了数组指针,特点?保存数组首地址。用途?p++的时候能指向下一个数组。所以了?要用它来指向一个二维数组。因为二维数组里的每一个元素都是相同类型的(都是一个int型数组),所以推导出步长了?sizeof(int[4]),即16

    //说白了就一指针,指向了数组类型

    例3:数组指针指向二维数组。

    复制代码
    #include<stdio.h>
    #include<stdlib.h>
    void main()
    {
        int a[3][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24}};
        int (*p)[4]; //该语句是定义一个数组指针,指针步长为4个int即16位。
        p=&a;
        int i=0;
        while(i<3)
        {
            //printf("%d	",(*p)[i]);
            //数组指针,指向的是一个数组整体,相当于指针也带了下标,当执行i++操作时,下标+1,得到该数组的下一个元素,
            //在该例中,指针没有位移,所以依次输出为1 2 3
    
            printf("%d	",(*p++)[0]);
            //整型数组类型的指针,指向的是一个数组整体,当执行*p++操作时,指针位移该数组长度的位数
            //在该例中,即指针位移4个int的长度,所以输出是1 11 21
            i++;
        }
    }
    复制代码

    通过例3就能够很明显的看出数组指针下标自增与本身自增的区别了。

    我记得以前老师说过:能用一维数组就尽量不要用二维数组。我想说的是:能用指针实现的尽量不要用数组指针。

  • 相关阅读:
    LoadRunner FAQ
    LoadRunner下载文件脚本
    Loadrunner上传文件解决办法(大文件)
    LoadRunner中的IP欺骗的设置以及误区
    Loadrunner11在win7下录制脚本,ie打不开
    LoadRunner检查点实战
    设置Loadrunner负载机临时文件目录
    ArcGIS中国工具,版权声明,本人没有授权任何单位和个人销售,其他都是盗版,为了你个人和单位利益,请勿购买。 销售QQ:27652980,853740877,电话:18987281928,13108507190,qq群310964401
    勘测定界软件,增加平方米和公顷,小数进位面积不平,自动调平功能;不够线状扣除负面积自动处理功能 ​​​​
    arcgis 获得工具箱工具的个数
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3208257.html
Copyright © 2011-2022 走看看