本篇日志关于二维字符数组的定義和初始化我相信这篇文章属于菜鸟级的,高手请直接无视
一般来说,我们可能会希望定义一个二维字符数组并且在定义的时候就用┅些字符串来初始化它比如说:
通常使用二维字符数组是为了在程序中存储一些字符串关键字。用这样的方式来初始化就最简单不过了其中,MAX_LENGTH是所有字符串中最大的长度当然不能忘记'\0'了。
而定义一个字符二维数组C也提供了简洁的方式,如果我不想统计字符串的长度我还可以这样定义:
也就是说,可以不再数组定义的时候指定字符串的长度但是注意字符串的个数是一定要指定的,像这样写 char **testcase = ... 是不行嘚不过肯定不行了,因为int *pt=3 也不行呵呵,这两个例子是一个道理啊
我觉得肯定是人都喜欢第二种初始化方法了,而且它还有一个优点起码对喜欢用指针的同志来说是一个大优点。就是可以将这样定义的指针赋给一个二维指针比如
想形式1的定义方法肯定不能这样赋值叻。
不过非常非常值得注意的是上面定义的两个指针,一个一维一个二维,他们必须在const关键字上一致意思就是说如果定义testcase前面加了const關键字,定义pointer时也必须加上否则就会报错:
在写这篇日志的过程中,我突然想到一个问题就似乎利用上面的方法二初始化二维字符串數组之中,字符串是如何分布的呢因为字符串的长度是不相等的,完全由编译器来计算那么它是会按照最长的字符串来定制字符数组嘚长度,还是让每一个字符串数组都按照自身的大小来占据内存靠'/0'来识别结尾呢?
为了搞清这个问题我又做了一些实验。有发现了一些有趣的东西不过还是另起一文吧。请见:
发布了0 篇原创文章 · 获赞 12 · 访问量 9万+