Pointer 指针
利用指针访问对象,指针指向一个对象,允许使用解引用符(操作符*)来访问对象 int ival = 42;
int *p = &ival;//p存放变量ival的内存地址,p是指向变量ival的指针
cout << *p;//符号*得到指针p所指的对象 对指针解引用会得到所指的对象,给解引用的结果赋值,实际也就是给指针所指对象赋值
*p = 0;//符号*得到指针p所指对象,可经由p为变量ival赋值
*p 操作的是指针指向对象 的内存地址空间,为*p赋值实际是为p所指的对象赋值;
解引用操作适用于确实指向了对象的有效指针
使用字面值nullptr初始化指针
指针初始化为字面值0生成空指针
NULL预处理变量preprocessor variable指针赋值 NULL在变量 cstdlib; 预处理 运行与编译之前预处理变量不属于命名空间Std
C++程序使用nullptr生成申明空指针
*pi 是 对象的值,pi却是对象的内存
int iival = 1024;
int *pi = 0;//pi合法,是一个空指针
int *pi2 = &ival //pi2是一个合法的指针,存放ival值
if(pi) pi 的值 0,因此条件的值是false
if(pi2) pi2指向ival,因为它的值不是0,条件为true;
任何非0指针对应的条件值true
对应两个类型相同的合法指针,== != 操作符 result boolera;
两个指针存储的地址值相同 指针存储的地址值相同都为nullptr;
都指向同一个对象
都指向了同一个对象的
一个指针指向某对象,同时另一个指针指向
同一条定义语句,虽然基本数据类型只有一个,申明符的形式却可以不同,一条定义语句可能定义出不同类型的变量 &r = i 赋值运算符 改变的永远都是左值
r定义多个变量
类型修饰符*& 作用于本次定义的全部变量 可以把空格写在类型修饰符和变量名中间 空格写在类型修饰符和变量名中间 空格写在类型修饰符和变量名中间
int* p;
int *p;
合法但很容易产生误导
*修饰符
*p仅仅修饰了p,对该声明语句中的其他变量 并不产生任何作用
int* p,p2;//p是指向int的指针,p2是int
把修饰符和变量写在一起
int *p1,*p2;
涉及指针和引用声明 第一种把修饰符和变量标识符写在一起,此种形式着重强调变量具有的复合类型
第二种把修饰符和类型名写在一起
并且每条语句只定义一个变量;
指针是内存中对象,像其它对象一样有自己的地址,允许把指针的地址再存放到另一个指针当中
int *p,i;
int pp = &p; ***指向指针的指针的指针
int ival = 1024;
int *pi = &ival;//pi是一个指向int型数
int **ppi = π
Pointer 指针的更多相关文章
- js this pointer 指针
this JavaScript的函数内部如果调用了this,那么这个this到底指向谁? 答案是,视情况而定! 如果以对象的方法形式调用,比如xiaoming.age(),该函数的this指向被调用的 ...
- 「2014-3-17」C pointer again …
记录一个比较基础的东东-- C 语言的指针,一直让人又爱又恨,爱它的人觉得它既灵活又强大,恨它的人觉得它太过于灵活太过于强大以至于容易将人绕晕.最早接触 C 语言,还是在刚进入大学的时候,算起来有好些 ...
- 重新想象 Windows 8 Store Apps (49) - 输入: 获取输入设备信息, 虚拟键盘, Tab 导航, Pointer, Tap, Drag, Drop
[源码下载] 重新想象 Windows 8 Store Apps (49) - 输入: 获取输入设备信息, 虚拟键盘, Tab 导航, Pointer, Tap, Drag, Drop 作者:weba ...
- 承诺c指针 (1)指针是地址
(1)是地址 首先明白一个观点:指针就是地址.这是理解指针的起始一步. 直观感受下.变量的地址 int main() { int foo; int *foo_p; foo = 5; foo_p = & ...
- Tagged Pointer
前言 在2013年9月,苹果推出了iPhone5s,与此同时,iPhone5s配备了首个采用64位架构的A7双核处理器,为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念.对于6 ...
- 听翁恺老师mooc笔记(3)--指针的定义
在上一个blog学习了&运算符,使用&取了变量.数组等地址,有什么用那?如果能够将取得的变量的地址传递给函数,能否通过这个地址在函数内访问到外部这个变量?答案是肯定的,scanf(&q ...
- C pointer again …
记录一个比较基础的东东…… C 语言的指针,一直让人又爱又恨,爱它的人觉得它既灵活又强大,恨它的人觉得它太过于灵活太过于强大以至于容易将人绕晕.最早接触 C 语言,还是在刚进入大学的时候,算起来有好些 ...
- Go之unsafe.Pointer && uintptr 类型
Go语言是个强类型语言.Go语言要求所有统一表达式的不同的类型之间必须做显示的类型转换.而作为Go语言鼻祖的C语言是可以直接做隐式的类型转换的. 也就是说Go对类型要求严格,不同类型不能进行赋值操作. ...
- (C/C++学习笔记) 十二. 指针
十二. 指针 ● 基本概念 位系统下为4字节(8位十六进制数),在64位系统下为8字节(16位十六进制数) 进制表示的, 内存地址不占用内存空间 指针本身是一种数据类型, 它可以指向int, char ...
随机推荐
- PowerBuilder -- 保存图片
String ls_path, ls_file_name, ls_filter, ls_errInt li_ret, li_loop, li_i, li_file, li_bytesLong ll_f ...
- 大白第一章第四节dp例题
入口 UVALive - 3882 #include<cstdio> using namespace std; ; int n,m,k,f[N]; int main(){ //f[i]表示 ...
- python -- redis连接与使用
前面我们简单介绍了redis nosql数据库,现在我们在python里面来使用redis. 一.python连接redis 在python中,要操作redis,目前主要是通过一个python-red ...
- 【Leetcode-easy】Valid Parentheses
思路:读取字符串中的每一个字符,并与栈顶元素进行比较,如果匹配则栈顶元素出栈,否则进栈.直到全部元素都出栈,否则该括号字符串不合法.需要注意细节. public boolean isValid(Str ...
- leetcode 859. Buddy Strings
Given two strings A and B of lowercase letters, return true if and only if we can swap two letters i ...
- 用户态文件系统fuse学习【转】
本文转载自:https://blog.csdn.net/ty_laurel/article/details/51685193 FUSE概述 FUSE(用户态文件系统)是一个实现在用户空间的文件系统框架 ...
- Spring Boot2.0之自定义参数
自定义参数,把不同环境的配置放到配置文件中去. 不同环境,如何区分配置文件信息,自定义配置文件信息 比如在 application.properties定义个参数 name=toov5 Spring ...
- matlab打开文件对话框
[filename, pathname, filterindex] = uigetfile({'*.xyz', '点云文件 (*.xyz)';'*.*', 'All Files (*.*)'},'请选 ...
- h5打电话发短信写邮件怎么实现
// 一.打电话<a href="tel:0755-10086">打电话给:0755-10086</a> // 二.发短信,winphone系统无效< ...
- IntelliJ IDEA 的 project 和 module 区别与关系
在IDEA 创建一个project,目录结构是这样的:在project下创建一个module之后目录结构是这样的: 简单的概括如下: IntelliJ系中的 Project 相当于Eclipse系中 ...