`
天泪不死
  • 浏览: 27953 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C++ 指针备忘

阅读更多
   本来是java程序员,但现在不得不面对C++愁眉苦脸。只能捡起书本从零开始,一些在脑海中有点混淆,容易混淆忘记的东西还是记下来为好,以备忘。
    C++的指针知识可为及其重要的基础,如果不懂得指针的用法,那看C++的源码程序就太难了。C++的指针知识是个难点,必须克服的难点。

指针声明:
1.每个数据类型都有指针类型
  int* i
  char* c
2.指针本来也是一种类型,指针可以对应着指针类型即二级指针变量
  int** i   即 (int*)* i【int指针类型的指针i】
3.一个*只能修饰一个指针
  int* i,p 【i为指针,p为int变量】
  要想一下声明多个指针,则可以:int* i,*p

指针赋值:
1.指针也可以初始化,赋值或初始化的值是同类型实体(即实体变量)的地址
  int i=10;
  int* ip=&i (&表示实体的地址)
  int* ipt=&10 是不可以的,10是实体,而不认可具有空间地址(所以说是实体变量地址才有效)
2.指针直接赋实体值
  int i=10;
  int* ip=&i;
  int* ipt=10  不可以,指针初始化必须是实体地址
  *ip=20  可以,指针间访操作
  这里的*ip为什么能直接给实体值呢?
  因为*ip是所指向实体地址的间访操作,也就是指针指向实体的时候是可以读写操作的。其实这里还是赋值的地址。
3.空指针不能赋实体值
  int* ip;
  *ip=10 不可以
  这里的*ip为什么又不能给实体值了呢?
  因为这里的指针*ip没有经过初始化,*ip没有指向实体,为空指针,则就不能读写了。

指针间的操作
  当指针指向具体实体后,指针也就有了具体的实体值和具体的空间地址,这时候就可以被二级指针所操作
  int i=10;
  int* ip=&10;
  int** iip=&ip;
 
  理解了上面的指针赋值,那么其余的指针间操作就好操作了,必须理解清楚指针在各种情况下的表示。

  给指针赋值,必须是个地址,各种形式的赋值只是表现出的形式不一样,实际指针只能指向实体的地址。指针在赋值时必须是与指针类型相同的类型实体地址。但实际的存储空间的实体都是以二进制数进行存储的,那么当一个float的实体地址被一个int指针指向时,这个float实体就会被强制转换为int实体,那么数据就出现变动。这是危险的。我理解的是,指针不能在类型不同时进行转换。

今天就到此了,明天还要继续。天,有点想发狂的冲动,还有指针运算、限定、引用,函数指针。头都要大了...





0
0
分享到:
评论

相关推荐

    备忘录模式 C++ 实现

    在C++中实现备忘录模式,通常会使用智能指针(如`std::shared_ptr`)来管理对象的生命周期,以防止内存泄漏。以下是一个简单的备忘录模式实现示例: ```cpp #include #include // 发起人角色 class Originator {...

    C++ 关键字备忘

    ### C++ 关键字备忘 #### `#include` - **用途**:预处理器指令,用于引入其他头文件。 - **示例**: ```cpp #include #include ``` #### `using namespace std;` - **用途**:声明使用标准命名空间`std`中...

    设计模式 - 备忘录模式(C++实例)

    照料者通常只是一个简单的容器,持有备忘录的指针。 ```cpp class Caretaker { private: Memento* memento; public: void setMemento(Memento* memento_) { memento = memento_; } Memento* getMemento() { ...

    C++ 备忘单-.pdf

    ### C++ 快速参考备忘单 #### 基本语法与结构 1. **注释**: - 单行注释:使用 `//` 开始。 - 多行注释:使用 `/*` 开始并以 `*/` 结束。 2. **数据类型**: - 整型:`int`, `short`, `long`, `long long` - ...

    C++设计模式课件19_Memento_备忘录.pdf

    - 智能指针:为了避免内存泄漏和管理资源,可以使用智能指针来自动管理备忘录实例的生命周期。 备忘录模式在实际应用中非常广泛,比如文本编辑器中的撤销功能就是备忘录模式的典型应用。此外,数据库事务恢复、游戏...

    C++设计模式之备忘录模式

    在C++中,备忘录模式通常包含三个角色: 1. **原发器(Originator)**:创建并保存备忘录,同时也负责使用备忘录来恢复其内部状态。在示例代码中,`Originator`类代表原发器,它拥有一个`State`结构体指针`m_pState`来...

    C++课程设计报告及源码.rar

    1. **C++基础**:首先,C++的基础知识是必不可少的,包括数据类型、运算符、控制结构(如if-else、switch-case、for、while等)、函数的使用以及数组和指针的理解。 2. **面向对象编程**:C++的精髓在于其面向对象...

    设计模式之备忘录模式(Memento Pattern)

    在实际编程中,可以使用Java的序列化技术实现备忘录,或者在C++中使用智能指针来管理备忘录对象的生命周期。对于Python等动态语言,可以通过拷贝模块实现浅拷贝和深拷贝。 文件"MementoPattern"可能包含了关于备忘...

    zookeeper windows C++ 编译,__imp_zookeeper_init错误备忘

    在ZooKeeper的案例中,`__imp_`前缀是C++编译器为导入函数添加的标准前缀,表示它是一个导入函数的指针。如果你在编译时没有正确地链接到ZooKeeper的导入库,编译器将无法找到`zookeeper_init`的实际地址,从而导致...

    c++23种设计模式

    C++中,备忘录模式通常使用智能指针和序列化来实现。 20. 状态模式:允许对象在其内部状态改变时改变它的行为。C++中的状态模式通过状态对象的切换来实现对象行为的动态改变。 21. 策略模式:定义一系列算法,并将...

    aide-memoire_de_c++_aide_C++_memoire_

    《C++备忘录》是一本专注于C++编程语言的参考手册,旨在帮助开发者记忆和理解C++的关键概念和技术。这本书以"ebbook"的形式提供,即电子书,方便读者随时随地查阅。通过阅读这本书,你可以深入掌握C++的核心特性,...

    C++11全套设计模式-23种指针的用法(a full DesignPattern -DesignPattern.zip

    《C++11全套设计模式-23种指针的用法》 设计模式是软件工程中的宝贵经验总结,它们代表了在特定上下文中解决常见问题的最佳实践。C++11标准引入了许多新特性,包括智能指针,这使得在C++中实现设计模式更加高效且...

    矩阵连乘的动态规划法和备忘录法的实现

    动态规划法和备忘录法是解决这类问题的有效策略,尤其适用于C++编程语言。 **矩阵连乘** 矩阵连乘是指将一系列矩阵按特定顺序相乘,其结果矩阵等于连续乘以这些矩阵。如果直接计算n个矩阵的乘积,复杂度为O(n^3),...

    23种设计模式c++实现代码

    C++中,通常利用共享指针和内部状态外部化来实现。 10. 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。C++中,可以通过智能指针或者类的继承实现。 11. 模板方法模式(Template Method):...

    c++设计模式精髓及源码

    C++中通过继承和包含原类指针实现。 8. 代理模式:为其他对象提供一种代理以控制对这个对象的访问。C++中可使用智能指针或继承实现。 9. 外观模式:提供一个统一的接口,用来访问子系统中的一组接口。C++中使用类...

    C/C++设计模式

    在C语言中,可以通过结构体和函数指针来实现备忘录模式。 **解析器模式** 解析器模式给定一组描述语言的文法规则,构造一个解释器。在C语言中,可以通过递归函数和字符串处理函数来实现解析器模式。 **命令模式** ...

    20种常见设计模式的C++实现

    C++中通常使用智能指针和友元机制来实现对对象状态的保存和恢复。 6. **访问者模式(Visitor)**:在不修改对象结构的前提下,为对象添加新的操作。C++中,访问者模式通过定义访问者接口,让元素接受访问者的访问,...

    vc备忘录 方便学习VC的同学及时记录

    - 学习智能指针(auto_ptr, unique_ptr, shared_ptr)的使用,以避免内存泄漏。 5. **STL(Standard Template Library)** - STL是C++标准库的一部分,包括容器(如vector, list, map)、迭代器、算法和函数对象...

    c++ 各种设计模式 以及各种应用

    在C++中,策略模式常通过指针或智能指针引用策略对象,实现策略的动态选择。 7. **组合模式(Composite Pattern)** 组合模式将对象组织成树形结构,允许用户对单个对象和组合对象统一处理。C++中可以利用继承和多态...

    C++标准模板库参考手册.pdf

    2. 迭代器:类似于指针,但比指针更强大,可以用于遍历容器中的元素。迭代器有输入迭代器、输出迭代器、前向迭代器、双向迭代器和随机访问迭代器等五种类型,每种类型对应不同的操作能力。 3. 算法:STL提供了一...

Global site tag (gtag.js) - Google Analytics