博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言中二维字符数组的定义和初始化
阅读量:6420 次
发布时间:2019-06-23

本文共 1593 字,大约阅读时间需要 5 分钟。

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

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

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是所有字符串中最大的长度。当然不能忘记'\0'了。

而定义一个字符二维数组,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

你可能感兴趣的文章
QTP解决内嵌IE窗体方法2
查看>>
“王子”的演讲:N828印象
查看>>
判断JS字符串中是否包含某些字符
查看>>
Phalanger---PHP的.NET编译器
查看>>
Scanner----java控制台和文件读取的利器(java 5新增)
查看>>
怎样解决spoolsv.exe应用程序错误
查看>>
Android应用程序键盘(Keyboard)消息处理机制分析(25)
查看>>
如何安全设定和检测你的密码安全性?
查看>>
.NET 设计模式初探
查看>>
一例HP ADG数据恢复成功(8×73GB SCSI)
查看>>
虚拟化系列-Citrix XenServer 6.1 XenMotion与HA
查看>>
CentOS下nginx、resin、memcached整合
查看>>
NeHe OpenGL第三十四课:地形
查看>>
《3D数学基础》2.1 矩阵基本概念、2.2 矩阵的数乘和加减法、2.3 方阵
查看>>
TFS创建团队项目(三)
查看>>
对发展的一点小感想
查看>>
Windows年底再现图片漏洞攻击!
查看>>
安全运维之:服务器遭受攻击后的一般处理过程
查看>>
示例化讲解RIP路由更新机制
查看>>
烂泥:HTML编辑器中使用img插入图片
查看>>