Pointer 指针

简介: 利用指针访问对象,指针指向一个对象,允许使用解引用符(操作符*)来访问对象int ival = 42;int *p = &ival;//p存放变量ival的内存地址,p是指向变量ival的指针cout
利用指针访问对象,指针指向一个对象,允许使用解引用符(操作符*)来访问对象

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 = π

  

目录
相关文章
|
机器学习/深度学习 算法 决策智能
【5分钟Paper】Pointer Network指针网络
【5分钟Paper】Pointer Network指针网络
323 0
【5分钟Paper】Pointer Network指针网络
|
1月前
指针(Pointer)的深度理解(2)
指针(Pointer)的深度理解(2)
34 1
|
2月前
|
C++
C++(十八)Smart Pointer 智能指针简介
智能指针是C++中用于管理动态分配内存的一种机制,通过自动释放不再使用的内存来防止内存泄漏。`auto_ptr`是早期的一种实现,但已被`shared_ptr`和`weak_ptr`取代。这些智能指针基于RAII(Resource Acquisition Is Initialization)原则,即资源获取即初始化。RAII确保对象在其生命周期结束时自动释放资源。通过重载`*`和`-&gt;`运算符,可以方便地访问和操作智能指针所指向的对象。
|
6月前
|
算法 安全 C++
C++ Effective Modern Pointer (智能指针模块)
C++ Effective Modern Pointer (智能指针模块)
|
C++
C++中的智能指针(smart pointer)
C++中的智能指针(smart pointer)
141 0
|
存储 Java Go
借问变量何处存,牧童笑称用指针,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang类型指针(Pointer)的使用EP05
指针是指什么?指针是存储另一个变量的内存地址的变量。变量是一种使用方便的占位符,用于引用计算机内存地址,一个指针变量可以指向任何一个值的内存地址它指向那个值的内存地址。类比的话,指针就是书籍中的目录,本身也占据书页,既可以通过目录获得章节内容,又可以指向具体章节的页数(地址)。
借问变量何处存,牧童笑称用指针,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang类型指针(Pointer)的使用EP05
|
存储 Java Go
Go 编程 | 连载 14 - 指针 Pointer
Go 编程 | 连载 14 - 指针 Pointer
Go 编程 | 连载 14 - 指针 Pointer
|
Java 编译器 Go
Golang 笔记(一):值方法和指针方法(Value Methods vs Pointer Methods)
Golang 笔记(一):值方法和指针方法(Value Methods vs Pointer Methods)
161 0
|
安全 Shell
【C++11】Smart Pointer 智能指针
首先看一个下面的栗子,左边是木有使用智能指针的情况,当执行foo()函数,其中的e指针会在bar(e)时传入bar函数,但是在bar函数结束后没有人为delete e时,就会导致内存泄漏;但是在右边的栗子中,使用了unique_ptr智能指针(single ownership),就能防止内存泄漏。
199 0
【C++11】Smart Pointer 智能指针
|
存储 编译器 C语言
五分钟杀穿指针 pointer——C语言专题
正片开始👀 指针👏 指针提供了对地址操作的一种方法,因此,使用指针可使得 C 语言能够更高效地实现对计算机底层硬件的操作。另外,通过指针可以更便捷地操作数组。在一定意义上可以说,指针是 C 语言的精髓。
五分钟杀穿指针 pointer——C语言专题