笔记: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 ...
随机推荐
- Audition导入视频文件出现错误
错误: We were unable to open this file using any of the currently available importers. If you would li ...
- 使用Eclipse快速开发jsp和.编码问题、JSP页面元素以及request对象
在IDEA中创建的Web项目: 浏览器可以直接访问WebContent中的文件. 例如http:// localhost:8888/MyJspProject/index1.jsp其中的index1.j ...
- VS Code中使用live Server
live server可以实时查看代码更改后的变化.测试十分快速. 1.安装live server 在扩展中搜索 live server,然后点击安装.等待安装完毕进行下一步配置. 2.打开设置界面: ...
- K8S Operator的开发与使用
从应用角度考虑,为什么会出现如此多的Operator场景,为什么很多中间件和厂商都会提供基于Operator的部署方案,他的价值是什么? 随着时代的发展,企业应用部署环境从传统的物理机->虚拟机 ...
- rabbit.bat server启动闪退,rabbitmq (ArgumentError) argument error,rabbitmq页面无法开启解决方案
步骤1:下载rabbitmq-plugins rabbitmq-plugins enable rabbitmq_managemen 步骤2:rabbitmq-service移除服务 rabbitmq- ...
- gRPC之.Net6中的初步使用说明
1.介绍 GRPC是一个高性能.通用的开源远程过程调用(RPC)框架,基于底层HTTP/2协议标准和协议层Protobuf序列化协议开发,支持众多的开发语言,由Google开源. gRPC也是基于以下 ...
- 开源规则引擎——ice:致力于解决灵活繁复的硬编码问题
背景介绍 业务中是否写了大量的 if-else?是否受够了这些 if-else 还要经常变动? 业务中是否做了大量抽象,发现新的业务场景还是用不上? 是否各种调研规则引擎,发现不是太重就是接入或维护太 ...
- 车企-TSP系统通用架构设计
最近一年用于参与到了新能源车企的管理系统的开发,并且主要从事架构设计与重难点功能开发的工作,因此有了一些小心得,特此记录(PS:整体和甲方在需求上扯皮,以及协调所有供应商这些项目管理上的事情比做开发耗 ...
- Mathematica处理若干个点电荷的电位电场的一个程序包
来自 Mathematica for Theoretical Physics Electrodynamics, Quantum Mechanics, General Relativity and Fr ...
- SQL优化---慢SQL优化
于2023.3.17日重写,之前写的还是太八股文太烂了一点逻辑都没有,这次重新写了之后,感觉数据库优化还是很有必要的,之前觉得不必要是我年轻了. 一.如何定位慢SQL语句 1.通过慢查询日志查询已经执 ...