笔记: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 ...
随机推荐
- 九九乘法表打印记一次al面试
for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(i + "x&quo ...
- 让VMWARE ESXI 虚拟机开机进入BIOS设置
VMware vSphere Client 里面选中需要从光驱启动的客户机,单击右键选择 "编辑设置", 在虚拟机属性的窗口里面选择 "选项 "选项卡 ,单击& ...
- 《Unix/Linux系统编程》第八周学习笔记
<Unix/Linux系统编程>第八周学习笔记 时钟服务函数 gettimeodfay() 获取系统时间 settimeofday() 设置系统时间 time() 以秒为单位返回当前时间 ...
- Old ST-LINK firmware detected.do you want to upgrade it?升级固件
一段时间没有使用st-link烧写程序了.打开keil5准备把程序烧写到stm32板子上时,报错Old ST-LINK firmware detected.do you want to upgrade ...
- Winform 应用DotnetBar
Winform 使用NotNetBar namespace WindowsFormExample { public partial class FrmMain : Office2007Form { p ...
- 【手搓模型】亲手实现 Vision Transformer
前言 博客主页:睡晚不猿序程 首发时间:2023.3.17,首发于博客园 最近更新时间:2023.3.17 本文由 睡晚不猿序程 原创 作者是蒻蒟本蒟,如果文章里有任何错误或者表述不清,请 tt 我, ...
- AES 简介 以及 C# 和 js 实现【加密知多少系列】
〇.AES 简介 AES 的全称是 Advanced Encryption Standard,意思是高级加密标准.它的出现主要是为了取代 DES(Data Encryption StandardDat ...
- python爬取猫眼电影Top100榜单的信息
爬取并写入MySQL中 import pymysql import requests from bs4 import BeautifulSoup headers = { 'User-Agent': ' ...
- Condition 接口
系统性学习,移步IT-BLOG Java 对象拥有一组监视方法:wait().wait(long timeout).notify() 以及 notifyAll() 方法,这些方法与 synchroni ...
- 配置 RSTP
实验1-5-2 配置 RSTP [实验名称] 配置 RSTP. [实验目的] 理解快速生成树协议 RSTP 的配置及原理. [背景描述] 某学校为了开展计算机教学和网络办公,建立了一个计算机教室和一个 ...