博客
关于我
C++指针
阅读量:270 次
发布时间:2019-03-01

本文共 736 字,大约阅读时间需要 2 分钟。

指针与引用的基础知识

在编程领域,指针和引用常常被混淆,但它们在内存管理和变量访问中扮演着不同的角色。以下是关于指针的详细解释。

1. 指针与引用不同

指针本身就是一个对象,它可以通过操作符*访问指向的目标对象。然而,引用不是一个对象,因为它不具备实际的内存地址。因此,引用无法直接作为指针使用。

2. 引用的特殊性

由于引用不具备实际地址,它不能像指针那样直接指向内存中的数据。这意味着即使你定义了一个引用,它也不会自动获取对应对象的内存地址。

3. 指针的内存管理

指针需要谨慎使用,因为编译器不会自动处理指针相关的内存问题。未经初始化的指针或错误访问的指针可能导致程序运行错误。

4. 指针的类型匹配

指针类型必须与它所指向的对象类型一致。例如,不能将一个用于整数的指针用于字符串操作。

5. 编译器的责任

编译器不会检查指针操作是否安全。无效指针可能导致不可预知的后果,包括程序崩溃或数据丢失。

6. 空指针的定义

空指针(null pointer)表示指针不指向任何有效对象。请注意区分空指针和无类型的指针(void*),后者可以存储任何对象的内存地址。

7. 指针的初始化

在C++中,你可以使用多种方式初始化指针:

  • int *p1 = nullptr;(C++11及以上版本)
  • int *p2 = 0;
  • int *p3 = NULL;(需要包含<cstdlib>

8. 赋值规则

将整数直接赋值给指针是错误的操作,即使数值为0也不例外。正确的做法是使用nullptr来表示空指针。

9. void指针的作用

void*指针可以用来存储任意类型的内存地址,使其具有高度的灵活性。

通过以上知识,你可以更好地理解指针的行为和潜在风险,从而避免在编程中出现问题。

转载地址:http://vuix.baihongyu.com/

你可能感兴趣的文章
oracle存储参数(storage子句)含义及设置技巧
查看>>
Oracle学习
查看>>
Oracle安装、Navicat for Oracle、JDBCl连接、获取表结构
查看>>
ORACLE客户端连接
查看>>
oracle常用SQL——创建用户、表空间、授权(12C)
查看>>
Oracle数据库异常--- oracle_10g_登录em后,提示java.lang.Exception_Exception_in_sending_Request__null或Connection
查看>>
oracle数据库异常---SP2-1503: 无法初始化 Oracle 调用界面 SP2-1503: 无法初始化 Oracle 问题的解决办法
查看>>
oracle数据库笔记---oracleweb视图使用流程,及plsql安装
查看>>
oracle数据库笔记---pl/sql的基础使用方法
查看>>
Transformer 架构解释
查看>>
Oracle数据库表空间 数据文件 用户 以及表创建的SQL代码
查看>>
Oracle数据库验证IMP导入元数据是否会覆盖历史表数据
查看>>
Oracle未开启审计情况下追踪表变更记录
查看>>
Oracle查看数据库会话连接
查看>>
Oracle查询前几条数据的方法
查看>>
oracle树形查询 start with connect by
查看>>
oracle毕业论文题目,历届毕业论文申报题目大全.doc
查看>>
oracle求助---win7下oracle配置相关疑问Starting Oracle Enterprise Manager 10g Database Control ...发生系统错误 5。
查看>>
oracle深度解析检查点
查看>>
oracle用户改名
查看>>