"); //-->
看似简单的东西从来没有去怀疑过书本知识,最近我一个学生在美国亚力桑那州立大学读大二回来,问她在美国学习是否能跟上,她说口语没什么问题,只是,她每次做实验,都是把实验步骤背熟了才去了,但是美国的学生却不需要看实验步骤,他们就可以开始做,而且很成功!上次杨振宁科学家老人在演讲的时候说过,美国的学生是先有现象才去看理论,他们不相信理论,相信自己的实验结果!我并非崇阳媚外,其实很多知识点,不管是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";
该数组编译后,在内存中的存储形式如下:
这给了我们一个判断字符串结尾的标志。
四:字符数组
很多人以为字符数组与字符串数组是一回事。但事实并非这样,我们来看一个实例分析:
在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;
}
运行结果
从结果我们知道,字符数组的个数是5个,编译器不会再后面加"\0"结束符,
字符串数组的元素个数是6,编译自动在后面加上了"\0"结束符。
2012-6-19 写于上海.松江
下家山
【上海索漫提供】请尊重原创,转载请注明:作者,下家山
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
三星743DF图纸
抹不去的悲哀 ——炮轰中国大学教育
Philipp Tomsich:RISC-V就是为AI而生的架构
加强ESD保护的小窍门
据报道三星派遣芯片团队赴德克萨斯州,引发美国客户交易传闻
Maxim 用于LCD背景光的多路HB LED 驱动电路
彩电场负反馈电路
英特尔开始裁员,工厂员工可能被裁减高达20%
据报道,2026 年 HBM 价格面临两位数下跌风险,对 SK hynix 构成挑战
上下管开关对称性的系统方法
嵌入式linux Framebuffer驱动开发 下
宇树科技:未来1-3年,机器人可流水线打螺丝
把紧张吹跑
自我激励九法
Maxim 降压-升压LED 驱动器 (VLED+
嵌入式系统硬件接口设计 中
玄铁赵思齐:RISC-V AME面向AI应用的高扩展性矩阵扩展
Maxim 高边降压LED 驱动器
Maxim 带汽车电子卸载保护的升压LED 驱动器
推荐网站
嵌入式linux Framebuffer驱动开发 上
Krste Asanovic:RISC-V AI 从向量到矩阵的架构选择与挑战
松下KY-P2N电磁灶原理图
嵌入式linux Framebuffer驱动开发 中
Maxim 升压LED 驱动器
三极管检波电路
晶心科技:基于RISC-V处理器的大型AI/ML SoC架构创新
嵌入式系统硬件接口设计 上
胆机电路图集
转帖,求助!