笔记:C++学习之旅---指针
一:
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由os回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放。
4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放。
<iostream>
namespace
std;
main()
int
*p =
new
int
;
"将3付给p的地址后,指针p读取的值:\t"
<<*p<<endl;
delete
p;
//删除指针以后没有将其置0,将导致后面程序再次对该指针使用,而p和p1是同一块内存地址,所以对p赋值23也意味着重新对p1赋值了
//p =0;//当将p置0为空指针后,再次使用该指针的时候,程序将出现奔溃,所以每次开辟空间的时候必须将该指针赋为空,宁愿报错,也不愿出现后面程序的错误导致很难调试。
"删除空间后,指针p读取的值:\t\t"
<<*p<<endl;
long
*p1 =
new
long
;
//当删除p的内存以后没有将p置0,而当新开辟一块空间时,编译器将释放掉的空间赋给了p1,那么p1也指向了释放掉的空间;
"创建新空间后,指针p中保存的地址:\t"
<<p<<endl;
//p和p1地址相同
"指向新空间的指针p1保存的地址:\t\t"
<<p1<<endl;
//意味着重新给p1赋值了;
"将23付给p的地址后,指针p读取的值:\t"
<<*p<<endl;
// 所以打印的结果p = 23
"将23付给p的地址后,指针p1读取的值:\t"
<<*p1<<endl;
//所以打印的p1 = 23;
delete
p1;
return
0;
<iostream>
namespace
std;
Human
:
"构造函数正在运行...\n"
;
"析构函数正在运行...\n"
;
:
int
i;
main()
Human
*p =
new
Human
;
//在堆中创建一个对象;
delete
p;
return
0;
<iostream>
namespace
std;
Human
:
"构造函数正在运行...\n"
;
"析构函数正在运行...\n"
;
int
const
get()
return
i;
:
int
i;
main()
Human
*p =
new
Human
;
"i的值:"
<<p->get()<<endl;
//p->get();使用->访问成员i;
delete
p;
return
0;
<iostream>
namespace
std;
A
:
void
set(
int
x
)
x
;
//this 指针一般不写,可以写成this->i = x;
"this 变量的保存的内存地址:\t"
<<
this
<<endl;
int
const
get()
return
i;
:
int
i;
main()
A
a;
"对象a的地址:\t"
<<&a<<endl;
//输出的this指针地址和对象a的地址相同,不同的对象this指针地址不同
A
b;
"对象b的地址:\t"
<<&b<<endl;
//输出的this指针地址和对象b的地址相同
return
0;
<iostream>
namespace
std;
A
:
void
set(
int
x
)
x
;
int
const
get()
return
i;
:
int
i;
main()
/*
A
*p =
new
A
;
"p的地址:"
<<p<<endl;
"p的地址:"
<<p<<endl;
A
*
const
p1 =
new
A
;
//如果将其改为const A *p1 = new A;那么就变成了指向常量的指针,那么下一行代码p1->ste(11),将会报错,指针本身可以修改,可以执行p++操作,但是指向的目标常量不可以被修改;
//p1++;//左值是一个常量,意思是p1是常量指针,无法改变;
return
0;
笔记:C++学习之旅---指针的更多相关文章
- 笔记-JavaWeb学习之旅7
JavaScript基础 概念:一门客户端脚本语言,运行在客户端浏览器中,每一个浏览器都有JavaScript的解析引擎,是一个脚本语言,不需要编译,直接就可以被浏览器解析执行. JavaScript ...
- 笔记-JavaWeb学习之旅5
CP30的演示 package cn.itcast.datasourcejdbc; import com.mchange.v2.c3p0.ComboPooledDataSource; import j ...
- ios学习之旅---指针也不难
1.认识指针 #include <stdio.h> //基本数据类型作为函数參数传递是值传递 //void moveFront(int x ,int y) //{ // x = x + 2 ...
- 笔记-JavaWeb学习之旅19
Redis:redis是一款高性能的NOSQL系列的非关系型数据库 NOSQL: Not Only SQL ,意即"不仅仅是SQL",是一项全新的数据库理念,泛指非关系型数据库 r ...
- 笔记-JavaWeb学习之旅18
AJAX:ASynchronous JavaScript And XML 异步的JavaScript 和XML 异步和同步:客户端和服务器端相互通信的基础上 同步:客户端操作后必须等待服务器端的响应, ...
- 笔记-JavaWeb学习之旅17
1.过滤选择器 首元素选择器:first 获得选择的元素中的第一个元素 尾元素选择器:last获得选择元素中的最后一个元素 非元素选择器:not(selector) 不包括指定内容的元素 偶数选择器: ...
- 笔记-JavaWeb学习之旅16
增强对象的功能 动态代理:在内存中形成代理类 实现步骤: 代理对象和真实对象实现相同的接口 代理对象 = Proxy.newProxyInstance(); 使用代理对象调用真实对象的方法 增强方法 ...
- 笔记-JavaWeb学习之旅15
Filter:过滤器 概念:当访问服务器的资源是,过滤器可以将请求拦截下来,完成一些特殊的功能 快速入门: 步骤: 定义一个类,实现接口Filter 复写方法 配置拦截路径 package com.d ...
- 笔记-JavaWeb学习之旅14
JSTL:JavaServer Pages Tag Library JSP标准标签库 if标签 <%@ page import="java.util.ArrayList" % ...
- 笔记-JavaWeb学习之旅10
Servlet server applet运行在服务器端的小程序,servlet就是一个接口,定义了Java类被浏览器访问到的规则(Java类重写这个接口,就可以被浏览器(tomcat)识别) Ser ...
随机推荐
- BLE目录
CH58x/CH57x 蓝牙从机篇(Peripheral) CH573 CH582 CH579蓝牙从机(Peripheral)/主机(Central)例程讲解一(蓝牙主从机收发数据接口说明) CH57 ...
- oralce 11g 数据库及客户端client等的下载安装
下载地址:https://www.oracle.com/cn/database/technologies/microsoft-windows.html
- Postman挂载外部文件,实现参数化
一般来说,对一个接口进行测试,只能用边界值和等价类的方法,因此就会涉及到各种参数,使用Postman参数化,比较便捷: 但是自己这篇写得实在太浅陋了,将流花兄的博客内容附下,可以直接看他的 https ...
- python之pyqt5-第一个pyqt5程序-图像压缩工具(2.0版本)-小记
(如想转载,请联系博主或贴上本博地址) 此篇为上一篇pyqt5图像压缩小工具改良版.因为比较简单,下面直接贴上代码. 效果图: # -*- coding: utf-8 -*- # Form imple ...
- WSL安装Ubuntu 22.04 (2)
1.安装系统环境 1.1.设置软件包源为国内镜像 参考:Ubuntu更换国内镜像源 - 知乎 1.2.更新系统软件包 sudo apt-get update && sudo apt-g ...
- 灵感宝盒新增「线上云展会」产品,「直播观赏联动」等你共建丨RTE NG-Lab 双周报
前言 哈喽各位开发者,「RTE NG-Lab 双周报」如期而至! 近两周,我们更新了一些新的实时互动场景和产品,也举办了代码实验室的第一次线下活动,与大家一起体验了声网最新的 4.0 SDK. 灵感宝 ...
- RSA 简介及 C# 和 js 实现【加密知多少系列】
〇.简介 谈及 RSA 加密算法,我们就需要先了解下这两个专业名词,对称加密和非对称加密. 对称加密:在同一密钥的加持下,发送方将未加密的原文,通过算法加密成密文:相对的接收方通过算法将密文解密出来原 ...
- POI Excel单元格样式超过最大数(4000或64000)的解决方案
aliases: [] tags : " #QA #Java " summary: [POI生成Excel超出的单元格样式的最大数量] author : [yaenli] note ...
- Django笔记八之model中Meta参数的使用
前面介绍了 model 的字段属性,字段类型,这篇笔记介绍一下 model 的 Meta 选项. 这个选项提供了一些参数,比如排序(ordering),表名(db_table)等. 但这都不是必需的, ...
- 使用msf生成shellcode并用Go免杀?
msf生成的裸马现在已经不行了,加壳也只能加冷门壳了,VMP,Shielden,upx不是失效就是效果很差,所以当下,得用shellcode来免杀了 msfvenom -a x86 --platfor ...