CPP笔记20130922

本文深入解析了C语言中字符数组、字符串、指针变量以及宽字符的存储空间需求、初始化方式与内存布局。通过具体实例,详细阐述了字符型与宽字符型数据在内存中的表示与分配,帮助读者理解C语言底层数据处理机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、char *p = "Hello,world!" ;所需的存储空间为: 4字节指针变量所需的空间 + 字符串"Hello,world!"的12个字节另外再加上一个字节用来表示字符串结束的0。


2、对于char a[] = "Hello" ;这种声明方式, 编译器会根据"Hello"字符串的长度( 5个字符 + 一个结尾0 )来决定初始化时的数组大小。

3对于一个字符数组char a[10] ;编译器则会自动保留10个字节的储存空间

4、在C语言中的宽字符正是基于short型数据的, 这一数据类型在头文件WCHAR.H中的定义为:

typedef unsigned short wchar_t ;

char c = 'a';//字符型变量c就会被用值0x41进行初始化, 0x41也就是ASCII码中的'A'字符;

wchar_t c = 'A' ;
//那么宽字符wchar_t变量c的值为0x0041, 学过汇编的朋友应该知道, 如果使用16位的CPU储存一个字, 将使用两个存储单元, 在这两个存储单元中, 低位字节放在低地址单元中, 高位字节则放在高地址单元中, 所以, 在这里, 处理器依然将从低位内存单元即低位字节开始处理字符, 'A'在内存中的顺序即为 0x41, 0x00


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值