您当前的位置:《c语言程序设计》听课笔记:21
《c语言程序设计》听课笔记:21

   1)一维数组中任何一个元素的a[i]的地址表示为&a[i]=a+i*sizeof(元素类型)

      ps:其中sizeof(元素类型)是计算一个元素占用存储空间的字节数

             C语言不对越界进行检查,越界访问会产生垃圾数据

   2)二维数组:按行进行存储(一行存完了再存下一行)

                 可看成特殊的一维数组(降维)

        eg:  float a[3][4]

            a[0]-->a[0][0]  a[0][1]  a[0][2]  a[0][3]

            a[1]-->a[1][0]  a[1][1]  a[1][2]  a[1][3]

            a[2]-->a[2][0]  a[2][1]  a[2][2]  a[2][3]

        a[i][j] 的地址可以这样得到:

      &a[i][j]=a[i]+j*sizeof(a[0][0])=4

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

                =a+i*(4*4)+j*4

   3)多维数组:在存储时第一维下标变化最快,右下标变化最快

五、数组的初始化

1、C语言中只有静态(static)数组存储类和外部(extern)数组存储类数组才能初始化(现在很多编译系统已取消这种限制)

2、且放在一对花括号中,按顺序依次赋值

3、也可部分初始化,没有初始化的,自动赋值0

4、对全部赋值的数组,可以不指定长度

5、二维数组,可以对一维长度不指定,二维必须指定(可以分行赋值,每行放在一个花括号中,也可全部放在一个花括号中,按顺序赋值)

六、数组作为函数参数

1、函数参数的传递方式:值传递和地址传递(地址传递,对形参的修改实质就是对实参的修改

ps:a、形参数组名是变量,实参数组名是常量

       b、形参和实参应类型一致

       c、形参数组可指定大小,也可不指定(一般不指定)

       d、二维数组,一维长度可不指定,但二维长度必须指定

       f、若在形参数组定义中没有指定元素个数,可以借助另一个形参完成

例题:平台问题。很经典的程序!

收藏状态
收藏本课程的同学
相关课程