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被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的 ...
随机推荐
- TcxVerticalGrid 汇总
赋值 AOrder.LoadSimpleFromFile(sDefineFile); grdRowFileDefine_PostalCode.Properties.Value := AOrder.Or ...
- Java Web程序工作原理
Web开发的最重要的基本功能是HTTP:Java Web开发的最重要的基本功是Servlet Specification.HTTP和Servlet Specitication对于Web Server和 ...
- WebKit 内核浏览器 initKeyboardEvent 函数原型
学习JS发送自定义键盘(KeyboardEvent)事件的过程中,遇到了一个小难题:单个按键Tab可以正常发送,焦点能够转移到下一个元素,但想实现Shift+Tab,反向移动焦点时,却被DOM3的浏览 ...
- cocos2d中两种移动的算法
在对cocos2d的sprite处理移动的过程中,通常用到的两种移动的算法: 假设这个CCNode是直接放在CCLayer上的 距离差法: CGPoint curTouchPosUI = [touch ...
- 多线程与网络之JSON和XML数据的解析
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- STM32L152 Keil 开发环境 显示Internal command error Flash down
使用Keil开发环境对STM32L Discovery进行开发,更新一次firmware后就不能连接目标板了,报错Internal command error Flash download faile ...
- HDU 3289 Cat VS Dog (二分匹配 求 最大独立集)
题意:每个人有喜欢的猫和不喜欢的狗.留下他喜欢的猫他就高心,否则不高心.问最后最多有几个人高心. 思路:二分图求最大匹配 #include<cstdio> #include<cstr ...
- javascript活动对象的理解——伪单例模式
在自己研究javascript各种设计模式的过程中,偶然写出的一段代码让自己理解的更深刻了,之所以称之为伪单例模式,是因为这段代码造成的结果很想单例模式,但是实际上是活动对象捣乱所造成的误会. 代码很 ...
- linux set
linux set 命令 功能说明:设置shell. 语 法:set [+-abCdefhHklmnpPtuvx] 补充说明:用set 命令可以设置各种shell选项或者列 出shell变量.单个选 ...
- [Objective-c 基础 - 3.3] @property属性详解
ARC 自动引用计数 ARC不是垃圾回收,而是编译器自动插入代码来减少程序员的代码输入和失误. 同时比垃圾和效率要高,因为其不影响运行时间,相当于自己管理内存. 总是通过属性来 ...