"); //-->
看似简单的东西从来没有去怀疑过书本知识,最近我一个学生在美国亚力桑那州立大学读大二回来,问她在美国学习是否能跟上,她说口语没什么问题,只是,她每次做实验,都是把实验步骤背熟了才去了,但是美国的学生却不需要看实验步骤,他们就可以开始做,而且很成功!上次杨振宁科学家老人在演讲的时候说过,美国的学生是先有现象才去看理论,他们不相信理论,相信自己的实验结果!我并非崇阳媚外,其实很多知识点,不管是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 写于上海.松江
下家山
【上海索漫提供】请尊重原创,转载请注明:作者,下家山
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。
eleaction01 阅读:4512