zoukankan      html  css  js  c++  java
  • C语言数组指针(指向数组的指针)

    注意:数组指针的定义,与指针数组的区别

    转载:http://c.biancheng.net/cpp/biancheng/view/162.html

    指向多维数组元素的指针变量


    ① 指向数组元素的指针变量
    【例6.7】输出二维数组各元素的值。这里采用的方法是用基类型为整型的指针变量先后指向各元素,逐个输出它们的值。

    #include <iostream>
    using namespace std;
    int main( )
    {
        int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
        int *p;                              //p是基类型为整型的指针变量
        for(p=a[0];p<a[0]+12;p++)
            cout<<*p<<" ";
        cout<<endl;
        return 0;
    }

    运行结果如下:
    1 3 5 7 9 11 13 15 17 19 21 23

    关于指向数组元素的指针变量的几点说明:

    • p是指向整型数据的指针变量,在for语句中对p赋初值a[0],也可以写成“p=&a[0][0]”。
    • 循环结束的条件是“p<a[0]+12”,只要满足p<a[0]+12,就继续执行循环体。
    • 执行“cout<<*p;”输出p当前所指的列元素的值,然后执行p++,使p指向下一个列元素。


    ②指向由m个元素组成的一维数组的指针变量
    可以定义一个指针变量,它不是指向一个整型元素,而是指向一个包含m个元素的一维数组。这时,如果指针变量p先指向a[0](即p=&a[0]),则p+1不是指向a[0][1],而是指向a[1],p的增值以一维数组的长度为单位,见图6.17。


    图6.17


    【例6.8】输出二维数组任一行任一列元素的值。

    #include <iostream>
    using namespace std;
    int main( )
    {
        int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
        int (*p)[4],i,j;
        cin>>i>>j;
        p=a;
        cout<<*(*(p+i)+j)<<endl;
        return 0;
    }

    运行情况如下:
    2 3↙
    23

    由于执行了“p=a”,使p指向a[0]。因此p+2是二维数组a中序号为2的行的起始地址(由于p是指向一维数组的指针变量,因此p加1,就指向下一个一维数组),见图6.18。*(p+2)+3是a数组2行3列元素地址。*(*(p+2)+3)是a[2][3]的值。


    图6.18


    3) 用指向数组的指针作函数参数
    一维数组名可以作为函数参数传递,多维数组名也可作函数参数传递。

    【例6.9】输出二维数组各元素的值。题目与例6.7相同,但本题用一个函数实现输出,用多维数组名作函数参数。

    #include <iostream>
    using namespace std;
    int main( )
    {
        void output(int (*p)[4]);  //函数声明 
        int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
        output(a);  //多维数组名作函数参数
        return 0;
    }
    void output(int (*p)[4])  //形参是指向一维数组的指针变量
    {
        int i,j;
        for(i=0;i<3;i++)
            for(j=0;j<4;j++)
                cout<<*(*(p+i)+j)<<" ";
        cout<<endl;
    }

      

    运行情况如下:
    1 3 5 7 9 11 13 15 17 19 21 23

  • 相关阅读:
    使用定时器实现获取手机验证码倒计时
    搜索历史管理
    利用vue和jQuery实现中国主要城市搜索与选择
    使用vue、jQuery生成带有logo的二维码
    使用vue-cli脚手架搭建Vue项目
    postcss-px-to-viewport
    git命令操作篇
    小程序中live-player
    对于常用数组的方法总结
    css的加载中动画
  • 原文地址:https://www.cnblogs.com/panlangen/p/7989520.html
Copyright © 2011-2022 走看看