zoukankan      html  css  js  c++  java
  • 数组小结

    1、数组的声明要指出:存储类型,数组名,数组大小

    2、没有引用数组,因为引用已经初始化不能在改变,但是可以有数组引用,即数组的引用,可以用于函数实参传递。

    3、关于数组的初始化,若不显式提供元素,对于内置类型数组,在函数体外元素被初始化为0,而在函数体内则不被初始化。对于非内置类型,则不管在哪里定义,都会调用默认构造函数进行初始化,若没有默认构造函数则报错。

    4、使用C风格字符串的标准库函数时,参数必须以’’结尾。

    5、C/C++中,二维数组按照行优先存储。

    6、一个N*M的二维数组a[x][y]转化为一维数组表示时,为b[x*M+y]

    7、关于指针的运算,只有在同一个数组中的运算才有意义。

    8、指针数组,是一个数组,装着指针。声明一个装有10个指针的数组int * a[10]

    9、数组指针,是一个指针,指向数组。指向一个装有10个整型的数组的指针 int  (*p)[10],此时sizeof(p)40

    10、二维数组的数组名是一个数组指针。int a[4][10]; int (*p)[10];p = a; sizeof(a)40

    11、数组名为一个常量,不能对其赋值。

    12、对于int a[10];&aint (*) [10],而aint *

    13、如果指针指向文字常量区,不能通过指针对其进行修改。

    14、对于数组int a[4][5]:

       a[0][0]   a[0][1]    a[0][2]   a[0][3]    a[0][4]

    int

    int

    int

    int

    int

    int

    int

    int

    int

    int

    int

    int

    int

    int

    int

    int

    int

    int

    int

    int

     

    1a:类型为 int (*)[5],即a为指向数组a0个元素a[0]的地址,a等价于&a[0]&a+120个元素。

    2*aa[0] 类型为int**a指向数组a[0]的首元素a[0][0]

    3*(a+1)a[1] 类型为int *a类型为int(*)[5],a指向有5个元素的一维数组,故a+1跳过5个元素。

    4*(*(a+1)+2) int型 ,指向的元素是a[1][2]

    总结:

    &a的类型为int(*)[5]

    a+i的类型为int(*)[5]

    *(a+i)int *;

    *(*(a+i)+j)int;

    *(a+i) = a[i];

    *(*(a+i)+j)=*(a[i]+j)=a[i][j]

    15、线性表的位序从1开始,而数组元素的下标从0开始。

  • 相关阅读:
    RabbitMQ in Action(5): Clustering and dealing with failure
    RabbitMQ in Action (2): Running and administering Rabbit
    [转]Setting Keystone v3 domains
    Openstack中RabbitMQ RPC代码分析
    RabbitMQ in Action (1): Understanding messaging
    [转]Understanding OpenStack Authentication: Keystone PKI
    neutron的基本原理
    nova vnc proxy基本原理
    sersync+rsync做实时同步
    使用rsync备份数据
  • 原文地址:https://www.cnblogs.com/houjun/p/4905447.html
Copyright © 2011-2022 走看看