C++ (P103—P154)
1 任一指针变量本身的数据值得类型都是unsigned long int
2 指针值为0的叫做空指针,为了安全起见,声明指针时最好初始化,哪怕是初始化为空指针
3 一般不能使用不同类型变量的地址来给指针赋值,如果确实需要可以进行强制类型转换
int i;
double *p = (dobule *)&i;
4 利用指针访问变量的过程称为“间接寻址”
5 指针加n的实际操作是使指针中的地址值加上 sizeof(数据类型)*n
6 如果两个指针所指向的变量类型相同,则它们之间做减法代表的绝对值代表这两个指针之间相隔的数据个数
7 在c++中this是一个指针,区分java哟,记住这句话:实际上,在调用一个对象的成员函数时,系统会首先将这个对象的地址赋给被调用成员函数中的this指针,然后成员函数访问数据成员时,就隐含的使用this指针来确保访问到的数据成员属于这个对象。
静态成员函数就没有this指针,这就是为什么静态函数不能访问非静态的函数,静态成员函数不能声明为常成员函数
8 指向数据成员的指针:数据类型 类名::*数据成员指针名;数据成员指针名=&类名::数据成员名;
使用的时候需要对象调用:对象名.*数据成员指针名;
指向类成员函数的指针:数据类型 (类名::*指针名) (参数列表);指针名=类名::成员函数名;
同样使用的时候需要对象调用:(对象名。*指针名)()
普通函数指针:int (*p)(int ,int );p=函数名;p(1,2);p代表的就是函数名那个函数
返回指针的函数:int *p(int ,int ); int *i=p(1,2);
指向静态成员的指针:使用普通指针即可,成员用类名限制。
int (*p)(int ,int );p=类名::函数名;p(1,2);p代表的就是函数名那个函数
int *p; p=类名::静态数据成员;
9 void指针,一般来说不同类型指针间的赋值时错误的但是void指针是个特例,void类型可以指向任一类型数据,当需要将void类型指针赋给其他类型时需要强转。
用于编写通用型函数,但是void类型指针在运算和输出时都需要强转为具体的数据类型
10 const放在指针类型前,表示声明了一个指向常量的指针。放在*和指针名之间就是声明一个指针常量,这时指针本身的值是不能改变的。
声明对象为常对象的时候,实际上间接声明了这个对象的this指针时常指针。
11 应用程序数据所占的内存有三种静态存储空间、栈、堆。全局变量和静态变量在静态存储空间中,局部变量在栈中,堆成为自由空间,动态内存申请都是像堆中申请空间。
12 dobule atof(const char* buf) 将字符串转换为浮点型数据
double atoi(const char* buf) 将字符串转换为整数型
int sprintf(char *buffer ,format,任意数据)将任意数据按照格式转换为字符串
strcat strcpy strcmp strlen strlwr strupr
13 sizeof三个特点:
对数组,sizeof(数组名)返回值为数组所占空间
对指针,sizeof(指针名)返回值为4
对数组传参给函数,参数为数组形式时,sizeof(数组名)返回值为4
14 深度拷贝构造函数与引用:
传值调用时,程序需要为每个传递的值生成一个副本,当程序从函数中返回值时,同样也需要一个副本。
但是如果采用传址或者引用调用时,函数中传递的是对象的地址,这时候不需要对象临时建立一个副本。
深度拷贝构造函数是针对类中存在指针时,调用深度拷贝构造函数时需要将指针重新分配空间再赋值,否则拷贝的和原来的都指向一个内存,如果在拷贝的对象里操作了指针,则原来的也会发生变化。拷贝构造函数是当传递对象作为参数时,会自动调用拷贝构函数对对象进行拷贝保存。
引用使用过程中注意指针的存在,指针的内存是可以delete的,引用的却没有这种机制,如果引用的空间是一个指针的空间,指针销毁了,但是引用还在用就有可能系统崩溃。
C++ (P103—P154)的更多相关文章
- 【DDD】领域驱动设计实践 —— 业务建模实例(‘发布帖子’)
本文是基于上一篇‘业务建模小招数’的实践,后面的多篇博文类似.本文主要讲解‘发表帖子’场景的业务建模,包括:业务建模.业务模型.示例代码:示例代码会使用java编写,文末附有github地址.相比于& ...
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- 读书笔记:JavaScript DOM 编程艺术(第二版)
读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- RxJS + Redux + React = Amazing!(译一)
今天,我将Youtube上的<RxJS + Redux + React = Amazing!>翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: https:/ ...
- ASP.NET Core 中文文档 第四章 MVC(3.8)视图中的依赖注入
原文:Dependency injection into views 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:孟帅洋(书缘) ASP.NET Core 支持在视图中使用 依赖 ...
- 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...
- 恢复SQL Server被误删除的数据(再扩展)
恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的 ...
随机推荐
- Oracle ORA-00119和ORA-00132的解决方案
今天在启动服务器上的ORACLE时遇到如下错误: SQL> startup; ORA-00119: invalid specification for system parameter LOCA ...
- ADO.NET - 全面梳理
转自:http://www.cnblogs.com/yangcaogui/archive/2012/06/09/2537086.html 目录: 简单的介绍下ADO.NET SqlConnection ...
- lightoj 1019
裸的最短路 dijkstra #include<cstdio> #include<string> #include<cstring> #include<ios ...
- js,css压缩工具
常见的js压缩工具: js commpress: 运行平台:windows系统, 优点:能自动压缩: 缺点:不能拖动文件压缩:只支持windows平台: s.press 运行平台:mac ox系统 优 ...
- 初识Ajax---简单的Ajax应用实例
原文: http://www.ido321.com/347.html 从网页前端输入提示范围内的字符,然后显示从后台返回的结果 1: <html> 2: <head> 3: & ...
- MySQL UNION 与 UNION ALL 语法与用法
MySQL UNION 语法 MySQL UNION 用于把来自多个 SELECT 语句的结果组合到一个结果集合中.语法为: SELECT column,... FROM table1 UNION [ ...
- 数电课设——琐碎
这几天没有更新过网站了,也没继续开发VellLock了,可是感觉还是没有闲着,一直在跟下面的一些元器件在打交道,当然下面的都是小儿科,英文文档都看得我快吐血了.数电基本属于棺材边上过的我,是各种头大, ...
- AlertDialog
1.AlertDialog点击时不自动消失 //在setPositiveButton和setNegativeButton根据自己的逻辑处理,大概代码如下 if(validate){//验证通过自动消失 ...
- 集合框架-Map练习-记录字母出现的次数
/* * 练习: * 字符串"abcb453 sddbs343bsjvAJBBDVBs21768723",获取该字符串中,每一个字母出现的次数. * 要求打印结果是:a(2)b ...
- Delphi 调用netsh命令修改IP地址
Delphi 调用netsh命令修改IP地址 先介绍一下Netsh命令的使用方法: 在这里跟大家介绍几个简单的指令 1.Show IP 1.1Cmd Mode 直接在cmd下面输入 netsh int ...