C++学习笔记(一)——内存、引用、const
来源:互联网 发布:linux中的uniq 编辑:程序博客网 时间:2024/06/15 15:09
内存管理
- 使用new申请内存,使用delete释放内存。
//C++:int *p = new int; delete p;int *arr = new int[100]; //申请块内存delete []arr;//如果写成delete arr,则只能删除第一个内存,后面99个内存还在。//c语言:void *malloc(size_t size); //申请内存void free(void *memblock); //释放内存
申请和释放内存配套,不可混用。
2. 申请内存需要判断是否成功
int *p = new int;if(NULL == p){//内存分配失败//异常处理}
const常量
使用const比宏定义define好,因为编译时const会检查变量类型,不易出错。
另外:
const int *p;int const *p; //二者等价
下面记录C++Primer中提到的一个问题:
假设给出以下语句:
typedef string *pstring;const pstring cstr;
请问cstr变量是什么类型?
答案是const string类型的指针。
那const pstring指针所表示的真实类型是什么?
const修饰的是pstring,而pstring是一个指针,所以等价为:
string *const cstr; //指向string类型对象的const指针//下面这个等价是错误的const string *cstr;
引用
int a = 3;int &b = a;b = 10; //b是a的别名,改变b相当于改变a
别名和指针的比较
引用和指针都可以间接访问另一个值,但是它们之间有两个重要区别:
- 定义引用时必须初始化,而指针初始化不是必要的(但是注意,未初始化的指针不要用于解引用*,即不要对该指针进行存、取值等操作)
- 给引用赋值修改的是与该引用关联的对象的值,而不是该引用与另一个对象的关联,引用一旦初始化就始终指向特定的对象。
//指针赋值int ival = 1024,ival2 = 2048;int *pi = &ival, *pi2 = &ival2;pi = pi2; //指针pi指向了ival2//引用赋值int &r1 = ival, &r2 = ival2;r1 = r2; //引用关联的对象没变,ival的值变成了ival2的值
0 0
- C++学习笔记(一)——内存、引用、const
- const 引用——c++ primer 学习笔记
- 达内学习笔记——引用及const
- const 引用(c++primer笔记)
- [C++学习笔记]const引用
- 【Objective-C学习笔记】内存管理——ARC自动引用计数
- C++Primer学习笔记—(const限定符)
- 《Objective-C高级编程 iOS与OS X多线程和内存管理》学习笔记——第一章自动引用计数
- C++学习笔记1-const引用
- 学习C++笔记(引用、const、iterator)
- C++学习笔记--再谈const和引用
- OC内存管理教程之ARC(一)——objective-c内存管理和引用计数
- 【从C到C++学习笔记】引用/const引用/引用传递/引用作为函数返回值/引用和指针的区别
- C/C++中关于地址、指针和引用变量的学习笔记(六) : const和void
- 【c/c++】const引用
- C++primer学习笔记——引用和指针
- 【C++】学习笔记四十——引用变量
- C++引用——const引用与非const引用
- java函数-生成素数表
- 史上最全的WebSettings说明
- 为什么需要开发web接口
- 04-树6 Complete Binary Search Tree
- python requests爬取网页乱码问题
- C++学习笔记(一)——内存、引用、const
- 程序设计基础(C)大作业——学籍管理系统(3)(完)
- vs2010打包程序最简教程
- Find a way(bfs)HDU
- 【重要】B树 B-树 B+树 B*树
- Ubuntu下挂载移动硬盘以及拷贝数据
- iframe跨域问题
- Qt Creator 使用tips
- JAVA(简单的一维数组)