基本原则:指针类型变量存储的就是地址!

1.数组名就是数组首元素的地址**

        int age[3];
int* p = age;

2.使用new操作符实际上是向操作系统申请一块内存(包含类型信息),返回的就是该块内存的地址。我们要引用他,就要指针指向这段内存的地址。

int* p1 = new int(10);//该int的值为10
Student* p3 = new Student;//其中Student是结构体

3.->操作符,专门用于操作指针指向对象(结构体,对象)的成员

p3->age = 13;

4.操作符可以操作指针指向的地址

(*p3).age = 13
int sum = 0;
int* p5 = ∑
*p5 = 1;
cout << *p5;

5.&操作符,专门用于取地址

Student s1;//Student是结构体
s1.name = "123"; s1.age = 13;
Student* p3 = new Student;
Student* p4 = &s1;

总之:

当你看到了指针,你就要想到地址,就要想到*,想到取地址操作符&,想到->,指针是有类型的。注意:C++中的引用类型参数(&),和取地址操作符&是不一样的。

6.函数的指针:使用前面的原则来理解,函数指针是一个什么样的存在呢?

int add(int x, int y)
{
return x + y;
}
int(*addptr)(int, int);
addptr = add;
cout << (*addptr)(10, 20) << endl;//提问:这里为什么要用*

C++指针速记的更多相关文章

  1. [速记]关于指针,引用和递归和解递归——C++

    在写基于二叉排序树的查找时,分为三个过程 1.二叉排序树的插入 2.二叉排序树的建立 3.基于二叉排序树的查找 其中第三部可以递归方式实现,也可以用while循环解递归,于是我想也解解第一步的递归,看 ...

  2. 速记const 指针与指向const的指针

    指向const的指针.它的意思是指针指向的内容是不能被改动的.它有两种写法. ` const int* p; (推荐) int const* p;` 再说const指针.它的意思是指针本身的值是不能被 ...

  3. Golang语法与代码格式速记【转】

    // Description: Golang语法与代码格式速记 // Author: cxy // Date: 2013-04-01 // Version: 0.3 // TODO 说明 // TOD ...

  4. TODO:Golang指针使用注意事项

    TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变:例子2是使用指针传递,会改变地址,从而改变地址. ...

  5. enote笔记法使用范例(2)——指针(1)智能指针

    要知道什么是智能指针,首先了解什么称为 “资源分配即初始化” what RAII:RAII—Resource Acquisition Is Initialization,即“资源分配即初始化” 在&l ...

  6. C++虚函数和函数指针一起使用

    C++虚函数和函数指针一起使用,写起来有点麻烦. 下面贴出一份示例代码,可作参考.(需要支持C++11编译) #include <stdio.h> #include <list> ...

  7. C++11 shared_ptr 智能指针 的使用,避免内存泄露

    多线程程序经常会遇到在某个线程A创建了一个对象,这个对象需要在线程B使用, 在没有shared_ptr时,因为线程A,B结束时间不确定,即在A或B线程先释放这个对象都有可能造成另一个线程崩溃, 所以为 ...

  8. c 数组与指针的使用注意事项

    数组变量和指针变量有一点小小的区别 所以把数组指针赋值给指针变量的时候千万要小心 加入把数组赋值给指针变量,指针变量只会包含数组的地址信息 而对数组的长度一无所知 相当于指针丢失了一部分信息,我们把这 ...

  9. Marshal.Copy将指针拷贝给数组

    lpStatuss是一个UNITSTATUS*的指针类型实例,并包含SensorDust字段 //定义一个数组类型 byte[] SensorDust = new byte[30] //将指针类型拷贝 ...

随机推荐

  1. svg 高宽随父元素自适应

    <html lang="en"> <head> <meta charset="UTF-8"> <meta name=& ...

  2. mdadm语法

    mdadm命令详解及实验过程   一.概念 mdadm是multiple devices admin的简称,它是Linux下的一款标准的软件 RAID 管理工具,作者是Neil Brown 二.特点 ...

  3. shell 统计字符串 字符个数

    统计“abbc”中“b”的个数 1:awknum=`echo abbc | awk -F"b" '{print NF-1}'` 2:trnum=`echo abbc | tr -c ...

  4. 安装pipenv

    首先: 安装pipenv pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pipenv 使用国内源安装pipenv 创建文件夹 mkd ...

  5. 11.2.0.1单实例DGduplicate过程

    记录一次duplicate完整过程1)环境说明数据库版本oracle11.2.0.1,os linux 6.6备库应用的归档,最近一次是三个月前,由于DG环境以前是好的,因此直接迁移数据即可.本次使用 ...

  6. python 启动shell报错 Subprocess Startup Error

    如图所示启动python的IDLE以后,按F5启动module或者启动shell的时候就会启动失败提示上面错误,刚开始百度知道解决方案不靠谱,最后找到原因是我之前看小甲鱼的教学视频时,新建了一个pic ...

  7. window10单机安装storm集群

    适合范围:storm自由开源的分布式实时计算系统,擅长处理海量数据.适合处理实时数据而不是批处理. 安装前的准备 1.安装zookeeper ①下载zookeeperhttps://zookeeper ...

  8. 修改hots指向

    C:\Windows\System32\drivers\etc hots文件 IP 服务器名称

  9. 14JDBC

    一.JDBC简介 全名:java database connection java代码与数据库相连的工具,java>JDBC>(oracle  mysql sql server) 二.四大 ...

  10. Spring Boot + JPA 因为 javassist 包出现 NullPointerException 问题的解决

    Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.ent ...