数组的维数

来源:互联网 发布:淘宝支持微信支付吗 编辑:程序博客网 时间:2024/06/05 01:08


       作为参数或者在二维数组的声明时,往往可以省略第一维,但是不可以省略第二维,或者是更高的维数。这是由于编译器的原理所限制的。

       &a[i][j]=&a[0][0]+i*sizeof(int)*n +sizeof(int );//此时n为二维的维数

    由此可以看出在定义二维数组或更高维数组时,对其进行初始化可以省略第一维参数,编译器会根据你的初始化语句自动决定第一维度,其后的维数不可省略!!!另外,一位数组和二维数组在内存中的分布是一样的,如 char a[10][10],char b[100],故将其进行sizeof的结果也是一样的。

 

     在这里有一个问题,很疑惑在初始化二维字符串数组时,字符串是如何分布的?因为由于每个字符串的长度都不等,而且还有编译器的不同问题,那么它是按照这里面最大的那个字符串来指定字符数组长度呢还是为每一个字符串“量身定做”,用’\0’结尾分布内存呢??????菜puppy啊。。。

         “整型二维数组从头到位就只有一个指针,整型一维,二维也好,数组都是连续存放的,知道头指针就可以知道后面每个元素的位置。但是字符二维数组就不止一个指针了,它是真的实现二维的指针,即一个根指针指向一个指针数组,然后数组的每一个元素(都是字符指针)分别对应格子的字符串首个字符的地址。”——摘自大佬的秘籍分享。

        







原创粉丝点击