关于c的字符,字符串

用c写程序的时候,在字符串上折腾了不止一次,有点心得,写下来以备后鉴。

习惯用脚本语言或者某些高级语言写程序的人在一开始用c处理字符串的时候可能会不适应,

这是因为:

c没有定义字符串类型,或者说得高级一点:c对字符串及字符串相关的操作“封装”的比较低级。

但是这并不意味着c不能有效的处理字符串,相反,效率很高,主要的原因也显而易见:c对字符串的操作是低级的。

使得c能够处理和高效处理字符串的工具是:指针。

c通过字符数组来实现字符串类型。

在c的世界里,数组的操作几乎总是可以有等价的指针操作。

c定义:字符串是被存储在一片连续的内存区域里的字符,这片连续内存区域的起始地址是对应字符串数组的数组名;

一般情况下,内存区不存在物理上的截断,所以c靠“\0”符号来表示一个字符串在内存区里的结尾;这也是为什么c入门书里

经常会说“hello world”需要12的字符存储单元来存储而不是11个的原因,每串字符结尾都会有一个“\0”作为结尾标志。

c里的引号:

在linux bash里,单双引号的区别在于解释器解释转义字符强度的不同,共同点是均表示字符串;

但是c规定:双引号表示字符串,单引号引起来的东西是整形数,数值等于引号里面的东西在字符表里对应的数值,字符表有ASC字符表,

unicode字符表等等。这也导致了一个现象:c里面判断是哪一个字符直接用数值比较就可以了:

charA = ‘a’;

a_or_not = (charA == 97);

a_or_not 将为真(假设字符表是asc字符表)。

另外,print(charA)将输出97而不是a,除非你指定输出格式为%c(字符);

先到这里。

posted on 2011-11-29 15:16 ewre 阅读(254) 评论(0)  编辑 收藏 引用 所属分类: C&C++ programming


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2013年6月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

留言簿(2)

文章分类

文章档案

最新评论

阅读排行榜