专栏中心

EEPW首页 > 专栏 > 字符串数组与字符数组的区别

字符串数组与字符数组的区别

发布人:xiajiashan 时间:2012-08-29 来源:工程师 发布文章

看似简单的东西从来没有去怀疑过书本知识,最近我一个学生在美国亚力桑那州立大学读大二回来,问她在美国学习是否能跟上,她说口语没什么问题,只是,她每次做实验,都是把实验步骤背熟了才去了,但是美国的学生却不需要看实验步骤,他们就可以开始做,而且很成功!上次杨振宁科学家老人在演讲的时候说过,美国的学生是先有现象才去看理论,他们不相信理论,相信自己的实验结果!我并非崇阳媚外,其实很多知识点,不管是c语言,arm,单片机,linux,我最想做的是自己去编译,验证一遍别人所说的,也许这就是我在本blog基本上所有文章都是原创的原因,我喜欢参考别人的,但我跟喜欢自己去验证,研究一遍自己才放心!

者:下家山(索漫科技培训教材,原创作品,转载请注明,下家山)

一:请运行下列代码

#include

 

 

int main (void)

{

int i=0;

char str[] = "hello";

 

while(1)

{

 

if(str[i++]='\0')

{

break;

}

printf("%c",str[i]);

}

return 0;

}

二:上述代码有什么问题

请各位猜猜!!!

三: 从现象看本质

数组是一组相同类型的变量或常量的集合;

数组的定义形式:

类型 数组名[数组下标]

字符串数组,字符串数组的特征:

初始化可以在后面用双引号括起来,可以不给数组下标,如果不给数组下标,编译器自动会计算出该数组有多少个元素。并且在数组结束位置自动加上字符串结束符"\0".

char str[] = "hello";

该数组编译后,在内存中的存储形式如下:

1.jpg

这给了我们一个判断字符串结尾的标志。

四:字符数组

 

很多人以为字符数组与字符串数组是一回事。但事实并非这样,我们来看一个实例分析:

 

在show出实例前,我这里根据自己的理解给出字符数组的定义。

字符数组就是以单个字符为数组元素的数组,它与字符串数组最大的区别在于:

当定义这两种数组都不给元素个数,即让编译器自动分配空间的时候,编译器自动会在字符串数组后加"\0"结束符号,而字符数组则不会加"\0"结束符号。

五:实践是检验真理唯一的办法

#include

 

int main (void)

{

char str[] = {'H','e','l','l','o'};

char str1[] = "hello";

printf("sizeof(str[])=%d\n",sizeof(str));//此处打印结果是5

printf("sizeof(str1[])=%d\n",sizeof(str1));//此处打印结果是6

while(1)

{

if('\0'==str[i])

{

break;

}

printf("%c",str[i++]);

}

return 0;

}

运行结果

2.jpg
 

从结果我们知道,字符数组的个数是5个,编译器不会再后面加"\0"结束符,

字符串数组的元素个数是6,编译自动在后面加上了"\0"结束符。

 

 

2012-6-19 写于上海.松江

下家山

【上海索漫提供】请尊重原创,转载请注明:作者,下家山

 

 

 

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

三星743DF图纸

资源下载 2007-03-26

Philipp Tomsich:RISC-V就是为AI而生的架构

加强ESD保护的小窍门

据报道三星派遣芯片团队赴德克萨斯州,引发美国客户交易传闻

EDA/PCB 2025-07-18

彩电场负反馈电路

英特尔开始裁员,工厂员工可能被裁减高达20%

据报道,2026 年 HBM 价格面临两位数下跌风险,对 SK hynix 构成挑战

网络与存储 2025-07-18

上下管开关对称性的系统方法

嵌入式linux Framebuffer驱动开发 下

宇树科技:未来1-3年,机器人可流水线打螺丝

嵌入式系统硬件接口设计 中

视频 2009-10-27

玄铁赵思齐:RISC-V AME面向AI应用的高扩展性矩阵扩展

推荐网站

Gao 2003-06-03

嵌入式linux Framebuffer驱动开发 上

Krste Asanovic:RISC-V AI 从向量到矩阵的架构选择与挑战

松下KY-P2N电磁灶原理图

嵌入式linux Framebuffer驱动开发 中

三极管检波电路

晶心科技:基于RISC-V处理器的大型AI/ML SoC架构创新

嵌入式系统硬件接口设计 上

视频 2009-10-27

胆机电路图集

资源下载 2007-03-26
更多 培训课堂
更多 焦点
更多 视频

技术专区