字符数据在内存中以ASCII码值的形式存储,也就是一个字节。所有数据类型都以二进制码0和1的形式存储。这个原则不会改变。
在C语言中,char类型数据常量并不是向字符变量中插入一个字符,而是该字符对应的ASCII码。储藏室里。
数组中存储一个汉字需要2个字节。UTF-8编码中,英文字符存储需要1个字节,中文字符存储需要3到4个字节。在UTF-16编码中,存储1个英文字符或1个汉字需要2个字节。使用UTF-32编码,世界上任何字符都需要4个字节的存储空间。
扩展信息:
由于标准ASCII字符集中的字符数量有限,无法满足实际应用中的要求。为此,国际标准化组织制定了ISO2022标准,该标准规定了将ASCII字符扩展为8位代码的统一方法,同时保持与ISO646的兼容性。
ISO制定了一系列适用于不同地区的扩展ASCII字符集。第1位(即十进制数128~255),称为扩展ASCII码。
参考来源:-字符编码
两者的区别如下:
1读写能力
此时的char*a="abcd"。存储在恒定区域中。您只能通过指针访问字符串常量,而不能更改它们。
而chara[30]="abcd"此时栈上存放的是“abcd”。可以通过指针访问和修改数组的内容。
2赋值时间
char*a="abcd"在编译时定义(因为它是常量)。
chara[30]="abcd"是在运行时定义的
3.突出显示的地址中存储的值是不同的。
对于char**p1,*p1的类型是char*类型,**p1的类型是char类型。
对于char*类指针p2,*p2是char类型。
char*a="abcd"存储在静态存储区中。堆栈上的数组比指针指向的数组更快。缓慢
chara[30]="abcd"存储在堆栈上。快速地。
4内存分配方式
内存分配有三种类型:堆区、栈区、静态存储区。功能不同,使用方法也不同。
1栈:是变量的存储区域,需要时由编译器分配,不需要时自动清理。里面的变量通常是局部变量、函数参数等。
2:是new或malloc分配的内存块。
3静态存储区:在程序编译时分配内存,该内存在程序执行期间一直存在。主要存储静态数据、全局数据和常量数据。
但是,好的编程习惯是:如果不再使用动态内存,则应将其释放,并立即将指针设置为NULL,以防止生成野指针。
参考资料:
——atof
上一篇:罗技鼠标板载内存模式什么意思
下一篇:char型数据在内存中存放的是