当前位置:首页 > 内存 > 正文

char型常亮在内存中存放的是

  • 内存
  • 2024-08-12 09:48:13
  • 5052

一、字符型量字符变量

字符变量是用于存储程序中单个字符的存储单元。方法定义为:`charx1,x2;`这定义了两个字符变量。字符变量可以通过赋值语句来初始化,如`x1='x';x2='y';`,它分别将字符'x'和'y'存储在x1和x2中。


在内存中,字符数据占用一个字节,但存储的并不是字符的实际形状,而是对应的ASCII码。例如‘x’的ASCII码是120,‘y’的ASCII码是121,它们的二进制形式分别是01111000和01111001,因此x1和x2在内存中的表示就是两个二进制码。


字符数据也可以被视为数值,请参见两个示例。在第一个程序中,函数`main()`将整型常量120和121赋值给字符变量x1和x2,`printf("%c,%c",x1,x2);`的输出是"x,y”。这表明字符数据可以解释为0到255之间的整数数据。


第二个程序本身演示了字符转换的简单应用。通过将ASCII码赋给符变量,然后减去32(大小写ASCII码的差值),如`x1=x1-32;x2=x2-32;`、`printf("%c,%c",x1,x2);`的输出是"X,Y",执行小写到大写的转换。


扩展信息

字符数包括字符常量和字符变量。字符串常量是由一对引号引起来的字符序列。字符变量的值是字符常量,即单个字符。字符变量的类型说明符是char。字符变量类型描述的格式和书写规则与整型变量相同。


二、字符串常量在内存中存储是占的单元数怎么算?

所有字符总数加1,因为字符串末尾会有一个'\0',这是系统自动添加的。由于字符占用的内存单元数为1byte,所以这样计算。如果有汉字,则对应的汉字必须乘以2,因为汉字占用2个字节。

由char字符组成的字符串。

例如:“Hello12345”,一共10个字符,但是因为最后有一个隐含的'\0'来标记结束,所以总共占用了11个字节。在PC中,1个字节(Byte,缩写为B)包含8个位。所谓位,就是可以存储0或1的基本存储单位。

扩展信息:

常见的表示方式是使用字符编码数组,每个字符占用一个字节(如ASCII码))或两个字节(如unicode中)。它的长度可以使用终止符(通常为NUL,ASCII码为0,这种方法用在C编程语言中)。或者在前面添加一个整数值来表示其长度(Pascal语言中使用此方法)。

这是一个以NUL结尾的字符串示例,以ASCII表示法存储在10个字节中:

FRANKNULkefw;4652414E4B006B666677

上面的长度string是5个字符,但注意它占用6个字节。终止符后面的字符没有任何意义。

这是同一个Pascal字符串:

lengthFRANKkefw;054652414E4B6B666677

当然,可能还有其他表示形式。使用树和列表可以使一些字符串操作(例如插入和删除)更加高效。