C++基础回顾:new与malloc区别与运算符详解

0 下载量 175 浏览量 更新于2024-08-30 收藏 118KB PDF 举报
C++基础知识总结涵盖了两个关键主题:内存管理和运算符使用。 一、内存管理 1. **new和malloc的区别**: - `new` 和 `delete` 是C++中的内存分配和释放机制,它们实际上是调用了C语言的 `malloc` 和 `free` 函数,但提供了自动调用构造函数和析构函数的功能。例如,当你用`new`为数组分配内存时,需使用`delete[]`进行释放,以确保正确地调用析构函数。 - `malloc` 和 `free` 的配合中,`malloc` 返回的是`void*`类型的指针,需要强制转换(通常为`static_cast`或`reinterpret_cast`)后才能使用。 - `new` 动态分配的内存存放在堆上,而`malloc`的内存则在自由存储区(也称栈外内存)。 2. **内存管理细节**: - 需要注意内存管理的正确性和效率,尤其是在处理动态内存时,避免内存泄漏和过度分配。 二、C++运算符 1. **取模运算符 `%`**:用于计算两个整数相除的余数,是算术运算符之一。 2. **逻辑运算符**:包括`!`(逻辑非)、`&&`(逻辑与)和`||`(逻辑或),用于条件判断。 3. **三元操作符 `?:`**:条件运算符,如果条件为真,则返回`a`,否则返回`b`,简化了复杂的if-else结构。 4. **位运算符**:`&`(按位与)、`|`(按位或)、`~`(按位非)用于处理二进制数据的位级操作。 5. **位移运算符**:`<<`(左移)和`>>`(右移)用于移动位,改变数值的二进制表示。 三、引用(References) 1. **&运算符的作用**: - 作为取地址运算符,`int*x=&y` 表示获取变量`y`的地址。 - 作为引用,`int&y=x` 创建了一个对`x`的引用,不允许重新绑定(即`k = j`不会改变`k`指向`i`,而是修改`k`的值)。 2. **引用的规则**: - 引用必须在创建时初始化,并且一旦初始化,不能再改变引用的目标。 - 引用常用于函数参数传递,以避免复制大量数据,提高效率。在重载操作符时,引用能提供更自然的行为,比如`[]`操作符通常返回引用而不是指针。 掌握这些C++基础知识对编程实践至关重要,理解内存管理有助于避免内存问题,而熟练运用各种运算符和引用可以提高代码的简洁性和效率。通过系统复习,无论是提升技能还是巩固基础,都能帮助你在IT行业中更好地应对挑战。