CPP笔记20130922

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

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


### C++ 期末考试复习要点总结 #### 一、C++ 基础概念 C++ 是一种面向对象编程语言,同时也是 C 语言的扩展。任何合法的 C 程序都可以被看作是一个合法的 C++ 程序[^1]。因此,在学习 C++ 过程中,掌握其继承自 C 的特性是非常重要的。 #### 二、C++ 编译过程 由于 C++ 可视为 C 的超集,两者的编译流程基本一致。通常情况下,C++ 的编译分为预处理、编译、汇编以及链接四个阶段。了解这些基础知识有助于理解程序运行机制及其错误调试方法。 #### 三、多线程与并发编程 对于现代软件开发而言,多线程技术至关重要。以下是几个核心知识点: - **线程生命周期**:熟悉创建、就绪、运行、阻塞和终止状态之间的转换。 - **线程同步**:通过锁(mutex)、条件变量等方式解决资源竞争问题。 - **生产者消费者模型**:这是经典的多线程协作模式之一,能够很好地体现如何协调不同线程间的工作流。 - **接口实现方式**:`Runnable` 和 `Thread` 类分别提供了两种不同的启动新线程的方法;而高级应用还可以考虑采用线程池来管理大量短时间任务执行情况[^2]。 ```cpp #include <iostream> #include <thread> #include <mutex> std::mutex mtx; void print_block(int n, char c){ std::lock_guard<std::mutex> lock(mtx); for (int i=0; i<n; ++i){ std::cout << c; } std::cout << '\n'; } int main(){ std::thread th1(print_block, 5,'*'); std::thread th2(print_block, 7,'#'); th1.join(); th2.join(); return 0; } ``` 上述代码展示了简单的多线程操作,并利用互斥量防止数据冲突现象发生。 #### 四、其他重要主题 除了以上提到的内容外,还有许多方面值得深入研究,比如模板元编程、STL容器及算法库的应用技巧等等。这些都是构成高效 C++ 开发不可或缺的部分。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值