您现在的位置: 首页 > 软件资讯 > 编程教学 >

C语言学习最快入门之C语言字符数组详解

C语言学习最快入门之C语言字符数组详解

2019-06-29 11:05:01 作者:新速下载网 来源:本站整理浏览:889

在之前的学习中,我们已经了解了C语言中数组的详细的内容,我们明白在C语言中还可以定义数组这样的数据类型进行数据的存储。因为拥有数组这样的数据类型,所以我们在使用和定义连续的变量时就更加的方便了。数组不仅可以如它的名字存储数字,还可以用来定义连续的字符组合,这样我们在需要使用一串连续的字符时,也就可以直接调用数组变量了。在今后的C语言编程中,C语言字符数组的使用会较为频繁,所以我们一起来学习《C语言字符数组详解》。

1.字符数组的定义和初始化:

字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素
char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};
即把10个字符分别赋给str[0]到str[9]10个元素,如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即'\0' )。
2、字符数组与字符串:

c 语言中,将字符串作为字符数组来处理。(c++中不是)在实际应用中人们关心的是有效字符串的长度而不是字符数组的长度,例如,定义一个字符数组长度为100,而实际有效字符只有40个,为了测定字符串的实际长度,C 语言规定了一个“字符串结束标志”,以字符'\0’代表。如果有一个字符串,其中第10个字符为'\0',则此字符串的有效字符为9个。也就是说,在遇到第一个字符'\0'时,表示字符串结束,由它前面的字符组成字符串。系统对字符串常量也自动加一个'\0'作为结束符。例如"C Program”共有9个字符,但在内存中占10个字节,最后一个字节'\0'是系统自动加上的。(通过sizeof()函数可验证)有了结束标志'\0'后,字符数组的长度就显得不那么重要了,在程序中往往依靠检测'\0'的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度。当然,在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度。(在实际字符串定义中,常常并不指定数组长度,如char str[ ])

说明:'\n’代表ASCII 码为0的字符,从ASCII 码表中可以查到ASCII 码为0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不干。用它来作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志。对C 语言处理字符串的方法由以上的了解后,再对字符数组初始化的方法补充一种方法——即可以用字符串常量来初始化字符数组:char str[ ]={"I am happy"}; 可以省略花括号,如下所示char str[ ]="I am happy";
注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是
错误的char str[ ];str="I am happy";不是用单个字符作为初值,而是用一个字符串(注意:字符串的两端是用双引号“”而不是单引号‘’括起来的)作为初值。显然,这种方法更直观方便。(注意:数组str 的长度不是10,而是11,这点请务必记住,因为字符串常量"I am happy"
的最后由系统自动加上一个'\0')
因此,上面的初始化与下面的初始化等价
char str[ ]={'I',' ','a','m',' ','h','a','p','p','y','\0'};
而不与下面的等价
char str[ ]={'I',' ','a','m',' ','h','a','p','p','y'};
前者的长度是11,后者的长度是10.
说明:字符数组并不要求它的最后一个字符为'\0',甚至可以不包含'\0',向下面
这样写是完全合法的。
char str[5]={'C','h','i','n','a'};

最后,在今天的学习中,我们详细地介绍了C语言的字符数组,知道了在编程时需要对于连续的字符进行处理时可以使用到。我们学习了字符数组的初始化和定义,知道字符数组该怎样进行使用,同时又详细地介绍了字符数组的存储机制,了解字符在数组中是怎样进行存储的,同时在存储时占据的数组长度为多少。在今后编程时,初始化定义字符数组时需要时刻牢记“/0”是占据一个数组的位置的,我们要仔细地处理,否则可能造成内存泄漏,存储数据溢出等后果!

Tags:C语言,字符
分享:
顶一下(0)
NAN%

相关专题

  • 棋牌游戏平台

    棋牌游戏平台

  • 真实赛车3手游合集

    真实赛车3手游合集

  • 区块链app合集

    区块链app合集

  • Outfit7手游

    Outfit7手游

  • 少女前线

    少女前线

  • 无尽之剑

    无尽之剑

  • 逃脱类手游

    逃脱类手游

  • 休闲益智游戏大全

    休闲益智游戏大全

  • 解谜游戏中文版大全

    解谜游戏中文版大全

  • 时空猎人3D手游

    时空猎人3D手游