- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言中二维字符数组 上
C语言中二维字符数组 上
C语言中二维字符数组的定义和初始化
一般来说,我们可能会希望定义一个二维字符数组并且在定义的时候就用一些字符串来初始化它。比如说:
Code:
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是所有字符串中最大的长度。当然不能忘记[message]了。
而定义一个字符二维数组,C也提供了简洁的方式,如果我不想统计字符串的长度,我还可以这样定义:
Code:
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 fromchar*[30]toconst char*
在写这篇日志的过程中,我突然想到一个问题,就似乎利用上面的方法二初始化二维字符串数组之中,字符串是如何分布的呢?因为字符串的长度是不相等的,完全由编译器来计算,那么它是会按照最长的字符串来定制字符数组的长度,还是让每一个字符串数组都按照自身的大小来占据内存,靠[message]来识别结尾呢?
二维字符串数组的初始化-动态内存分配
昨天在用FBS200指纹采集芯片采集到一个二维数组数据后,利用串口传输上来的数据是以十六进制的数据格式表示的二维矩阵,比如FF、BD、5C等等这样的形式,而对于一幅灰度图像,一般都是在0~255之间的数据来表示其亮度值,因此想通过二维字符串数组来对采集过来的数据进行转化显示。但在动态分配一个char*str;str=new char*[128];之后对其进行初始化时,总是出现错误,不知道如何才能很好的对其赋值,还得深入学习一下。
其实对一个字符的转化很容易,但对一个字符串形式的字符来转化,而且是对一个多维数组来转化就有点吃力了。首先建立一个多维字符串数组,这里是二维的字符串数组,程序如下所示:
#i ncludestdio.h
void main()
{
char*str1[2][2]={FF,F9,FA,F9};//初始化一个二维字符串数组
char*str;//定义一个一维字符串变量
int a,b;
int i,j;
int result1;
for(i=0;i 2;i++)
{
for(j=0;j 2;j++)
{
str=str1[j];//对一维字符串赋值
printf(%s\n,str);
if(str[0]=Astr[1]=A)
{
a=int(str[0]-A);
b=int(str[1]-A);
result1=(a+10)*16+(b+10)*1;//AA~FF之间的转化结果
}
else if(str[0]=Astr[1]A)
{
a=int(str[0]-A);
b=A-str[1]+1;
result1=(a+10)*16+b;//A0~F9之间的转化结果
}
else if(str[0]Astr[1]=A)
{
a=A-str[0]+1;
b=int(str[1]-A);
result1=a*16+(b+10)*1;//0A~9F之间的转化结果
}
else
{
a=A-str
您可能关注的文档
最近下载
- 品牌推广策划方案.docx VIP
- 2025年腊味制品行业深度研究报告.docx
- 用挤出滚圆法制备球形微丸的某些关键问题研究 .docx VIP
- 2022年天津市专技人员继续教育公需课考试答案之之“十四五”规划和2035年远景目标纲要的新变化与新提法.pdf VIP
- 高标准农田建设项目施工组织设计.doc VIP
- 尾矿坝施工组织设计(技术标).doc VIP
- 注塑模具基础知识课件PPT.pptx VIP
- 【中建八局】建筑机电安装系统的组成.pptx VIP
- 《素食说略》中国烹饪古籍丛刊.pdf VIP
- 特灵GENYUE直流变频式多联空调机组VRF-SLB009A-ZH-180807.pdf VIP
原创力文档


文档评论(0)