字符串在内存中的存储
❶ 字符串hello在内存中占几个储存单位
你好,字符串hello在内存中占5个储存单位,也就是5个字节,这是ASCII字符的属性,hello五个字母都是单字节字符,按照ASCII码的规定,每个字符占一个字节。
现在计算机都是32位或者64位,但计算机的传统并没有变,字节的概念也一直沿用,ASCII码也依然是原来的字符集,不同的是计算机速度赶快了,处理能力更强大了。
❷ 字符串在内存中怎么储存
字符串是以ASCII字符NUL结尾的字符序列。
ASCII字符NUL表示为\0.字符串通常存储在数组或者从堆上分配的内存中。只是,并不是全部的字符数组都是字符串,字符数组可能没有NUL字符。
字符数组也用来表示布尔值等小的整数单元,以节省内存空间。
C中有两种类型的字符串:
单字节字符串
由char数据类型组成的序列
宽字符串
由wchar_t数据类型组成的序列
wchar_t数据类型用来表示宽字符,要么是16位宽。要么是32位宽。这两种字符串都以NUL结尾。能够在string.h中找到单字节字符串函数。而在wchar.h中找到宽字符串函数。宽字符主要用于非拉丁字符集,对于支持外语的应用程序非常实用,
字符串的长度是字符串中除了NUL字符外的字符数。为字符串分配内存的时候,要记住为全部的字符加上NUL字符分配足够的空间。
❸ 存储字符串“a”需要至少占用存储空间中的几个字节
存储字符串“a”需要至少占用存储空间中的2个字节。
字符串是用双引号(“”)括起来的由零个或多个字符组成的有限序列。字符串在存储上是使用单个字符代码的数组,每个字符占用一个字节。由于每个字符串尾自动加一个‘\0’作为字符串结束标志。
所以字符串“a”的长度使用单字符'a'和单字符‘\0’共2个单字符代码的数组进行存储,即占用存储空间中的2个字节。
(3)字符串在内存中的存储扩展阅读:
在程序设计中,字符串通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。
由于在程序中经常出现大量String对象的值相同的情况,造成内存空间的冗余。为了有效地利用内存,预留了一块特殊的内存区域,称为String常量池。当编译器遇到一个String常量时,先检查常量池中是否存在值相同的String常量,如果存在,则把该常量的引用指向常量池中的String常量。
❹ 汇编语言字符窜存储
字符串在内存中以字节(byte)为单位存储,字符串包含多少字符就需要多少byte来存。汇编中定义一个字符串如下:
myStringBYTE"ABCDEF",0;常以0作为字符串的结尾
内存中存储顺序如图所示,从箭头开始,依次向下。假设第一个地址是0000h,下一个byte的地址就是00001h,依次类推。内存中存储的是字符的二进制编码,比如A41h=01000001b
希望对LZ有用~
PS:2L说的是英特尔架构CPU的“小尾顺序”规则,其他一些CPU可能采用“大尾顺序”
比如定义一个字(WORD):myWordWORD1234h如果是小尾顺序,那低地址存34h,高地址存12h,如图中0000h的地方存34h,00001h的地方存12h。大尾顺序则相反~(汗。。。。但愿不显得太罗嗦)