char型指针在c++里面已经被当成字符串了,打印时候会把指针当做字符串打印,需要打印时候可以转化为void*类型

 char c = 'a';char* ptr_char = &c;cout<<(void*)ptr_char<<endl;

void* 一种特殊的指针类型,可以存放任意对象地址

  1. 存放一个内存地址,地址指向内容的类型不能确定。也就是说不能通过他改变指针指向的数据,即下面代码报错
 int num = 123;void* ptr = &num;*ptr = 456;
  1. void*类型指针一般用来:和别的指针进行比较、作为函数输入输出、赋值给另一个void*指针

引用:为对象起另一个名字

  1. 引用并非对象,只是为已经存在的对象起了一个别名
  2. 只能绑定在对象上,不能与字面值或者某个表达式计算结果绑定一起。如int &ref = 10就是错误用法,但是可以在前面加一个const更正,就可以看成一个常量引用。
  3. 引用必须初始化,故使用引用之前不需要测试有效性,因此引用可能比指针效率高。

动态内存分配

使用new分配内存

  1. 在运行阶段分配未命名的内存以存储值
  2. 只能通过指针来访问内存
int* ptr = new int;

使用delete释放内存

  1. 与new配对使用
  2. 别释放已经释放的内存
  3. 别释放声明变量分配的内存

注:不要使用delete释放同一内存两次;如果使用new [ ],为数组分配内存,则对应delete [ ]释放。

程序内存分配空间

  • 栈区stack
    由编译器自动分配释放,一般存放函数参数值,局部变量等,如int a中a就是存放在栈区;
    操作方式类似于数据结构中的栈,先进后出。
  • 堆区heap
    一般由程序员分配释放,若程序不释放,程序结束时可能由操作系统回收;如 int* a = new int;所分配给int四个字节的内存就存放在堆区,而指针变量存放在栈区
    与数据结构中的堆是两回事,分配方式类似于链表。
  • 全局区(静态区,static)
    全局变量和静态变量是存放在一起的,程序结束后由系统释放
  • 文字常量区
    常量字符串就存放在这里,程序结束由系统释放
  • 程序代码区
    存放函数体的二进制代码

参考B站老九学堂C++教学视频

指针,引用及内存基础认识相关推荐

  1. C语言指针基础知识点(六)--通过指针引用多维数组

    指针系列目录   C语言指针基础知识点(一)–指针及指针变量   C语言指针基础知识点(二)–指针变量的引用   C语言指针基础知识点(三)–指针变量作为函数参数   C语言指针基础知识点(四)–通过 ...

  2. C语言指针基础知识点(四)--通过指针引用数组

    指针系列目录   C语言指针基础知识点(一)–指针及指针变量   C语言指针基础知识点(二)–指针变量的引用   C语言指针基础知识点(三)–指针变量作为函数参数   C语言指针基础知识点(四)–通过 ...

  3. C语言指针基础知识点(七)--通过指针引用字符串

    指针系列目录   C语言指针基础知识点(一)–指针及指针变量   C语言指针基础知识点(二)–指针变量的引用   C语言指针基础知识点(三)–指针变量作为函数参数   C语言指针基础知识点(四)–通过 ...

  4. 字符串、指针、引用、数组基础

    1.字符串: 字符是由单引号所括住的单个字母.数字或符号.若将单引号改为双引号,该字符就会变成字符串.它们之间主要的差别是:双引号的字符串"A"会比单引号的字符串'A'在字符串的最 ...

  5. Rust是如何实现内存安全的--理解RAII/所有权机制/智能指针/引用

    不带自动内存回收(Garbage Collection)的内存安全是Rust语言最重要的创新,是它与其他语言最主要的区别所在,是Rust语言设计的核心. Rust希望通过语言的机制和编译器的功能,把程 ...

  6. c语言中通过指针引用数组,C语言基础(二)

    指针引用数组 C语言规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素. 引入指针变量后,就可以用两种方法来访问数组元素了.如果p的初值为&a[0],则: p+i和 ...

  7. C++基础知识 - 指针引用

    指针引用 指针变量的定义 int x = 666; int *p = &x;int* &q = p; //定义指针变量的引用 int* &q = p; 这叫做指针的引用. 不要 ...

  8. 面试准备每日五题:C++(六)——CC++、staticconstextern、sizeof strlen、指针引用、数组指针指针数组函数指针

    文章目录 一.C和C++的区别是什么? 二.关键字static.const.extern作用 三.sizeof和strlen的区别 四.指针和引用的区别 五 .指针数组.数组指针.函数指针 一.C和C ...

  9. Golang struct 指针引用用法(声明入门篇)

    Golang struct 指针引用用法 一.前言 入门篇,只包括声明内容,基础的赋值 和 修改值. 个人总结:在 变量访问 struct 结构体时,共有5种不同的方式定义 指针结构体. 个人术语: ...

最新文章

  1. android中设置控件获得焦点 (转)
  2. 5.15 vs2019 静态编译_HPCC S01E01 编译 win10,ubuntu 安装
  3. mysql配置两个猪数据库_Linux下安装启动多个Mysql
  4. 给程序员的忠告:九种不值得你追随的老板
  5. 超前促销创意PSD分层电商海报,紧抓住消费冲突视觉力!
  6. 不要主动进行垃圾回收
  7. python简单代码-Python简单进程锁代码实例
  8. java算法题解法_LeetCode算法题-Ugly Number(Java实现-四种解法)
  9. 高频变压器漆包线规格的确定
  10. So Far Away
  11. 13. Zigbee应用程序框架开发指南 - 多网络支持
  12. 碳足迹PCF国内外标准和碳标签应用
  13. The SDK seems invalid 问题处理
  14. 将logstash与elasticsearch性能匹配的几点尝试
  15. rl滤波器原理_入门篇,层层讲解滤波电路工作原理
  16. 如果把小程序业务和研发管理都放到一个平台
  17. python绘制蟒蛇_Python基本图形绘制——蟒蛇绘制
  18. FastJson1.2.24反序列化导致任意命令执行漏洞复现(CVE-2017-18349)
  19. 清华大学胡事民是计算机视觉,ResNet也能用在3D模型上了,清华「计图」团队新研究已开源...
  20. Eclipse RCP - 第一个RCP程序

热门文章

  1. 最全智能制造数字化应用方案
  2. Unity UI抗锯齿测试
  3. Python 计算思维训练——字典与字符串练习(一)
  4. 蓝桥杯试题 算法提高 Monday-Saturday质因子
  5. Chapter 3: Strings、Vectors And Arrays
  6. NOI2019 游记
  7. Python 爬虫小课 2-9 中国妖怪数据库,运行中竟然发现有个色(he)欲(xie)妖怪分类
  8. 个人申请专利的费用是多少?
  9. MySQL----数据库概述
  10. 九度1465:最简真分数