C++中指针赋值原则
来源:互联网 发布:ubuntu telnet 命令 编辑:程序博客网 时间:2024/06/01 09:52
1 指针简介
指针(pointer)是“指向(point to)”另外一种类型的复合类型,它实现了对其它对象的间接访问。定义指针类型的方法将声明符写成*d的形式,其中d是变量名,如以下代码声明了一个整形指针:
int *ip1;
2 指针赋值
对指针进行赋值只能使用以下四种类型的值:(1)空指针(2)类型匹配的对象的地址(3)同类型的另一个有效指针(4)另一对象之后的下一地址。
2.1 空指针
空指针(null pointer)不指向任何对象。
(1)赋值为空指针
有以下几种方法可以将指针赋值为空指针。
int *p1 = nullptr;
int *p2 = 0;
int *p3 = NULL;
其中,nullptr是C++11新标准刚刚引入的一种方法。
(2)不能赋值为整形变量,但是可以赋值为整形常量
把整形变量直接赋给指针是错误的操作,如
int zero = 0;
int *p1 = zero;
如果将zero声明为常量值,则可以用其对指针进行赋值:
const int zero = 0;
int *p1 = zero;
(3)未定义的指针
如果只是声明了一个int指针,而未对其进行定义,如
int *p4;
则此时该指针的值是0xCCCCCCCC,如图2-1所示。
图2-1 空指针与未定义指针
2.2 类型匹配的对象的地址
可以将指针赋值为其类型匹配的对象的地址。
int one = 1;
int *p5 = &one;
从图2-2中可以看到,此时p7的值是0x005CFB98,而0x005CFB98的内存中保存的值是4个字节的int类型的数据,其值为1。
图2-2 类型匹配的对象的地址
2.3 同类型的另一个有效指针
可以将指针赋值为同一类型的另一个有效指针。
int *p6 = p5;
此时,可以从图2-3中看到,p6的值与p5的值相同,都是0x005CFB98。
图2-3 同类型的另一个有效指针
2.4 另一对象之后的下一地址
还可以将指针赋值为同类型对象的下一个地址。
int *p7 = p5+1;
从图2-4中可以看到,p7的值是0x005CFB9C,也就是p5的值0x005CFB98加上4个字节。
图2-4 另一对象之后的下一地址
- C++中指针赋值原则
- C/C++中同名覆盖原则和赋值兼容原则
- C语言指针赋值
- C-指针赋值总结
- c语言中const 类型变量地址赋值给指针。
- c 结构体中存在指针,指针的不同赋值方法
- C语言指针的初始化和赋值
- C语言指针的初始化和赋值
- C语言指针的初始化和赋值
- C语言指针之间赋值的合法性
- C语言指针的初始化和赋值
- C语言指针的初始化和赋值
- C语言指针的初始化和赋值
- C指针的初始化与赋值
- c语言指针的初始化赋值
- 《C专家编程》--const指针赋值
- C语言指针的初始化和赋值
- C语言指针的初始化和赋值
- 一个android debug技巧
- ssm框架整合shiro框架未验证前filterChainDefinitions配置问题
- 函数模板与类模板
- Asp.net MVC中的ViewData与ViewBag
- 关于安装完MyEclipse之后的一系列配置操作
- C++中指针赋值原则
- leetcode40. Combination Sum II
- 主题六 函数(C语言核心)----34.可变参数列表
- 怎样更改电脑的com口(串口)
- 365浏览器更新到v60.0.3112.20
- ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决 通过终端安装程序sudo apt-get install xxx时出错: E: Coul
- Kotlin-06.控制流程(control flow)
- 数据库常用语句
- dup与dup2函数详解