指针,引用及内存基础认识
char型指针在c++里面已经被当成字符串了,打印时候会把指针当做字符串打印,需要打印时候可以转化为void*
类型
char c = 'a';char* ptr_char = &c;cout<<(void*)ptr_char<<endl;
void* 一种特殊的指针类型,可以存放任意对象地址
- 存放一个内存地址,地址指向内容的类型不能确定。也就是说不能通过他改变指针指向的数据,即下面代码报错
int num = 123;void* ptr = #*ptr = 456;
void*
类型指针一般用来:和别的指针进行比较、作为函数输入输出、赋值给另一个void*
指针
引用:为对象起另一个名字
- 引用并非对象,只是为已经存在的对象起了一个别名
- 只能绑定在对象上,不能与字面值或者某个表达式计算结果绑定一起。如
int &ref = 10
就是错误用法,但是可以在前面加一个const
更正,就可以看成一个常量引用。 - 引用必须初始化,故使用引用之前不需要测试有效性,因此引用可能比指针效率高。
动态内存分配
使用new分配内存
- 在运行阶段分配未命名的内存以存储值
- 只能通过指针来访问内存
int* ptr = new int;
使用delete释放内存
- 与new配对使用
- 别释放已经释放的内存
- 别释放声明变量分配的内存
注:不要使用delete释放同一内存两次;如果使用new [ ],为数组分配内存,则对应delete [ ]释放。
程序内存分配空间
- 栈区stack
由编译器自动分配释放,一般存放函数参数值,局部变量等,如int a
中a就是存放在栈区;
操作方式类似于数据结构中的栈,先进后出。 - 堆区heap
一般由程序员分配释放,若程序不释放,程序结束时可能由操作系统回收;如int* a = new int;
所分配给int
四个字节的内存就存放在堆区,而指针变量存放在栈区
与数据结构中的堆是两回事,分配方式类似于链表。 - 全局区(静态区,static)
全局变量和静态变量是存放在一起的,程序结束后由系统释放 - 文字常量区
常量字符串就存放在这里,程序结束由系统释放 - 程序代码区
存放函数体的二进制代码
参考B站老九学堂C++教学视频
指针,引用及内存基础认识相关推荐
- C语言指针基础知识点(六)--通过指针引用多维数组
指针系列目录 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 C语言指针基础知识点(三)–指针变量作为函数参数 C语言指针基础知识点(四)–通过 ...
- C语言指针基础知识点(四)--通过指针引用数组
指针系列目录 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 C语言指针基础知识点(三)–指针变量作为函数参数 C语言指针基础知识点(四)–通过 ...
- C语言指针基础知识点(七)--通过指针引用字符串
指针系列目录 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 C语言指针基础知识点(三)–指针变量作为函数参数 C语言指针基础知识点(四)–通过 ...
- 字符串、指针、引用、数组基础
1.字符串: 字符是由单引号所括住的单个字母.数字或符号.若将单引号改为双引号,该字符就会变成字符串.它们之间主要的差别是:双引号的字符串"A"会比单引号的字符串'A'在字符串的最 ...
- Rust是如何实现内存安全的--理解RAII/所有权机制/智能指针/引用
不带自动内存回收(Garbage Collection)的内存安全是Rust语言最重要的创新,是它与其他语言最主要的区别所在,是Rust语言设计的核心. Rust希望通过语言的机制和编译器的功能,把程 ...
- c语言中通过指针引用数组,C语言基础(二)
指针引用数组 C语言规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素. 引入指针变量后,就可以用两种方法来访问数组元素了.如果p的初值为&a[0],则: p+i和 ...
- C++基础知识 - 指针引用
指针引用 指针变量的定义 int x = 666; int *p = &x;int* &q = p; //定义指针变量的引用 int* &q = p; 这叫做指针的引用. 不要 ...
- 面试准备每日五题:C++(六)——CC++、staticconstextern、sizeof strlen、指针引用、数组指针指针数组函数指针
文章目录 一.C和C++的区别是什么? 二.关键字static.const.extern作用 三.sizeof和strlen的区别 四.指针和引用的区别 五 .指针数组.数组指针.函数指针 一.C和C ...
- Golang struct 指针引用用法(声明入门篇)
Golang struct 指针引用用法 一.前言 入门篇,只包括声明内容,基础的赋值 和 修改值. 个人总结:在 变量访问 struct 结构体时,共有5种不同的方式定义 指针结构体. 个人术语: ...
最新文章
- android中设置控件获得焦点 (转)
- 5.15 vs2019 静态编译_HPCC S01E01 编译 win10,ubuntu 安装
- mysql配置两个猪数据库_Linux下安装启动多个Mysql
- 给程序员的忠告:九种不值得你追随的老板
- 超前促销创意PSD分层电商海报,紧抓住消费冲突视觉力!
- 不要主动进行垃圾回收
- python简单代码-Python简单进程锁代码实例
- java算法题解法_LeetCode算法题-Ugly Number(Java实现-四种解法)
- 高频变压器漆包线规格的确定
- So Far Away
- 13.	Zigbee应用程序框架开发指南 - 多网络支持
- 碳足迹PCF国内外标准和碳标签应用
- The SDK seems invalid 问题处理
- 将logstash与elasticsearch性能匹配的几点尝试
- rl滤波器原理_入门篇,层层讲解滤波电路工作原理
- 如果把小程序业务和研发管理都放到一个平台
- python绘制蟒蛇_Python基本图形绘制——蟒蛇绘制
- FastJson1.2.24反序列化导致任意命令执行漏洞复现(CVE-2017-18349)
- 清华大学胡事民是计算机视觉,ResNet也能用在3D模型上了,清华「计图」团队新研究已开源...
- Eclipse RCP - 第一个RCP程序