C++语法基础(8)——指针与引用

发布时间:2022-08-18 18:30

指针和引用

指针基本运算

指针简介

指针的概念
指针保存了一个内存地址,对指针的操作就是对地址的操作。
可以将内存理解为一个“大数组”,指针相当于存储了一个数组下标,它指向下标对应位置的变量。
C++语法基础(8)——指针与引用_第1张图片
指针的声明
&运算符被称为取地址运算符,它返回变量在内存中的地址。void指针可以指向任意类型的值。

int a;
int *ptrToA = &a;

double b;
double *ptrToB = &b;

void *voidPtrToA = &a;
void *voidPtrToB = &b;

取地址运算符不能作用于常量或表达式,如int *ptr = &2; 或者int *ptr = &(a + b); 。因为他们在内存中并没有固定的地址。
空指针
空指针的值可以用NULL(C和C++98的风格)或者nullptr(C++11新标准)表示。他们的值都是0x0,表示指针不指向任何对象。

//cite from 
#ifndef __cplusplus
#define NULL ((void *)0) // C语言
#else
#define NULL 0 // C++
#endif

可以发现,C语言的NULL保证为void*类型,但C++的NULL仅为常量0。在C++中使用NULL宏可能会导致函数重载错误。相比之下, C++11引入的nullptr始终保证其为指针类型。
在C++代码中,建议使用nullptr

指针的基本运算

指针赋值

int *intp = &x; //让指针指向某一变量

int *intp1 = &x, *intp2;
intp2 = intp1; // 同类型的指针之间可以赋值,赋值相当于改变了指针指向的对象。

间接访问
为了访问指针指向的值,我们使用*符号,这被称为解引用运算符:

  • *ptr的值为指针指向的变量的值;
  • *ptr的修改会作用到原对象上。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号