zoukankan      html  css  js  c++  java
  • C语言中二维字符数组的定义和初始化

    本篇日志关于二维字符数组的定义和初始化。我相信这篇文章属于菜鸟级的,高手请直接无视。

    一般来说,我们可能会希望定义一个二维字符数组并且在定义的时候就用一些字符串来初始化它。比如说:

    1 char testcase[30][MAX_LENGTH] = {"jo","vicent","tom","honey","gigi","lily","susan","peter","bob","ron",  
    2                             "jason","henry","kiki","ken","auscar","vivian","yiyi","peace","iron","lotus"  
    3                             "andy","arta","ophone","denial","pipe","wade","james","kobe","kent","angel"};  

    通常使用二维字符数组是为了在程序中存储一些字符串关键字。用这样的方式来初始化就最简单不过了。其中,MAX_LENGTH是所有字符串中最大的长度。当然不能忘记''了

    而定义一个字符二维数组,C也提供了简洁的方式,如果我不想统计字符串的长度,我还可以这样定义:

    1 char *testcase[30] = {"jo","vicent","tom","honey","gigi","lily","susan","peter","bob","ron",  
    2                             "jason","henry","kiki","ken","auscar","vivian","yiyi","peace","iron","lotus"  
    3                             "andy","arta","ophone","denial","pipe","wade","james","kobe","kent","angel"};  

    也就是说,可以不再数组定义的时候指定字符串的长度,但是注意字符串的个数是一定要指定的,像这样写 char **testcase = ... 是不行的,不过肯定不行了,因为int *pt=3 也不行,呵呵,这两个例子是一个道理啊。

    我觉得肯定是人都喜欢第二种初始化方法了,而且它还有一个优点,起码对喜欢用指针的同志来说是一个大优点。就是可以将这样定义的指针赋给一个二维指针,比如

    char **pointer = testcase;

    想形式1的定义方法肯定不能这样赋值了。

    不过非常非常值得注意的是,上面定义的两个指针,一个一维,一个二维,他们必须在const关键字上一致,意思就是说如果定义testcase前面加了const关键字,定义pointer时也必须加上,否则就会报错:

    error C2440: 'initializing' : cannot convert from 'char *[30]' to 'const char **

    在写这篇日志的过程中,我突然想到一个问题,就似乎利用上面的方法二初始化二维字符串数组之中,字符串是如何分布的呢?因为字符串的长度是不相等的,完全由编译器来计算,那么它是会按照最长的字符串来定制字符数组的长度,还是让每一个字符串数组都按照自身的大小来占据内存,靠'/0'来识别结尾呢?

    为了搞清这个问题,我又做了一些实验。有发现了一些有趣的东西。不过还是另起一文吧。请见:

    http://blog.csdn.net/huangzheguyun/article/details/6466329

    转自:http://blog.csdn.net/huangzheguyun/article/details/6466322

  • 相关阅读:
    使用jsonEditor打造一个复杂json编辑器
    【原创】一次“诡异”的容器Unix Socket通信问题分析
    【原创】Ingress-Nginx-Controller的Metrics监控源码改造简析
    IDEA+DevTools实现热部署功能
    ElementUI按需引入各种组件
    vue-cli4.0更新后怎样将eslint关闭
    Mysql修改字段名、修改字段类型
    博客搬家CSDN
    如何优雅的处理Restful
    java系列之注解
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/5583385.html
Copyright © 2011-2022 走看看