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被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的 ...
随机推荐
- POJ 2243 Knight Moves
Knight Moves Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13222 Accepted: 7418 Des ...
- 使用linq 对 DataTable 中的数据进行 查询 与 分类求合
A:linq 的查询方式写得可以非常简洁如下所示: DataTable dt = null; private void XtraForm1_Load(object sender, Eve ...
- 多线程与网络之SDWebImage和NSCache
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- Python:itertools模块
itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器和生成器表达式)的函数联合使用. ch ...
- 45种Javascript技巧大全(转)
6.小心使用typeof.instanceof和constructor typeof:不要忘了typeof null返回object,而大多数对象,typeof(Array, Date, and ...
- [Tutorial] Using the RasPi as a WiFi hostspot
http://www.raspberrypi.org/forums/viewtopic.php?f=36&t=19120 http://wireless.kernel.org/en/users ...
- hdu4436-str2int(后缀数组 or 后缀自动机)
题意:给你一堆字符串,仅包含数字'0'到'9'. 例如 101 123 有一个字符串集合S包含输入的N个字符串,和他们的全部字串. 操作字符串很无聊,你决定把它们转化成数字. 你可以把一个字符串转换成 ...
- 【转】 hive安装配置及遇到的问题解决
原文来自: http://blog.csdn.net/songchunhong/article/details/51423823 1.下载Hive安装包apache-hive-1.2.1-bin.ta ...
- Project: Individual Project - Word frequency program----11061192zmx
Description & Requirements http://www.cnblogs.com/jiel/p/3311400.html 项目时间估计 理解项目要求: 1小时 构建项目逻辑: ...
- ORA-02041: client database did not begin a transaction
.NET中访问Oracle数据库链接:ORA-02041: client database did not begin a transaction 问题的处理. .NET中访问Oracle中带有DB_ ...