• 数组指针与指针数组


    数组与指针是个难弄的问题,要想搞明白这点,有两个要点

    第一、[]算符的优先级是高于*算符的;

    第二、理解指针声明语句的意思,可以从*p代表什么意思的角度来理解声明语句的意思。见如下代码里的注释:

    1.数组指针——指向数组的指针

    //指向数组的指针
        int *a0    ; //1 a0相当于一维数组名  2 *a0为第0个数组元素的值  3 先a0++,再*a0相当于第1个数组元素的值
        int (*a1)[3];//[]算符的优先级要高于*算符,所以要加括号。意思是*a1为一个三个元素的int数组,因此a1为指向一维数组的指针,因此a1可以被当做二维数组来使用
        int (*a2)[7][8];//意思是*a2为一个7x8的二维数组,因此a2为指向二维数组的指针,因此a2可以被当做三维数组来使用
    //赋值方法如下: a0=new int[10]; a1=new int[2][3]; a2=new int[6][7][8]; //注:以上a0、a1、a2都不能用,因为new出来的变量不会初始化,里面是不确定的值。

    2. 指针数组——装着指针的数组

    //装着指针的数组
        int *b0[10];  //[]算符的优先级要高于*算符,故等价于int *(b0[10])。b0是个10个元素的一维数组,每个元素都是个int指针。
        int *b1[2][3];//b1是个2x3的二维数组,每个元素都是个int指针
    //初始化方法如下
        int x=100;int *p=&x;
        for(int i=0;i<10;i++)
            b0[i]=p;
        for(int i=0;i<2;i++)
            for(int j=0;j<3;j++)
                b1[i][j]=p;

    3. 混合使用

     //混合使用
        int **c0[10];//c0是个一维数组,数组的每个元素都是int **类型的,即数组的每个元素都是指向int指针的指针。
        int *(*c1)[10];//声明语句的意思是*c1是int *[10]类型的,即*c1是个指针数组,故c1是个指向指针数组的指针。
        //初始化方法如下
        int x=100;int *p=&x;int **p1=&p;
        c0[6]=p1;
        c1=&b0;
  • 相关阅读:
    CSS文字大小单位px、em、pt
    前台和后台数据传递综合总结
    关于JSON对象,以及联合数组,eval函数的使用参考
    C#整数的三种强制类型转换int、Convert.ToInt32()、int.Parse()的区别
    web.xml配置内容介绍
    Hibernate核心接口SessionFactory解释
    spring简单配置
    hibernate简单实例
    struts简单配置
    web.xml简单配置
  • 原文地址:https://www.cnblogs.com/james6176/p/2760839.html
Copyright © 2020-2023  润新知