【小白学习C++ 教程】七、在C++指针声明和指针相关概念
发布日期:2021-07-01 02:11:17 浏览次数:2 分类:技术文章

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

@Author:Runsen

C++ 指针学习起来有点难,但是很重要。一些 C++ 程序使用指针更容易执行,另外其他 C++ 程序,例如动态内存分配,没有指针就无法执行。

每个变量都是一个内存位置,每个内存位置都定义了其地址,可以使用与号(&)运算符访问该地址,该运算符表示内存中的地址。

下面代码考虑以下将打印定义的变量的地址

#include 
using namespace std;int main () {
int var1; char var2[10]; cout << "Address of var1 variable: "; cout << &var1 << endl; cout << "Address of var2 variable: "; cout << &var2 << endl;}

输出如下

Address of var1 variable: 0x61fe1cAddress of var2 variable: 0x61fe12

指针声明

在编程语言中,指针是一个变量,其值是另一个变量的地址。与任何变量或常量一样,您必须先声明一个指针,然后才能使用它。

指针变量声明的一般形式是 :

type *var-name;

这里,type是指针的类型;它必须是有效的 C++ 类型,并且var-name是指针变量的名称。

用于声明指针的星号与用于乘法的星号相同。但是,在此语句中,星号用于将变量指定为指针。

下面是有效的指针声明

int    *ip;    // pointer to an integerdouble *dp;    // pointer to a doublefloat  *fp;    // pointer to a floatchar   *ch     // pointer to character

所有指针的值的实际数据类型,无论是整数、浮点数、字符还是其他类型,都是相同的,一个长的十六进制数,代表同一个内存地址。

不同数据类型的指针之间的唯一区别是指针指向的变量或常量的数据类型

C++ 使用指针

象征 名称 描述
&(与号) 地址运算符 确定变量的地址。
∗(星号) 间接运算符 访问地址的值。
#include 
using namespace std;int main(){
int var = 5; int *ip; ip = &var; cout << "变量Var的值:" << endl; cout << var << endl; cout << "变量Var的中存储的地址ip:" << endl; cout << ip << endl; cout << "访问指针中可用地址处的值:"; cout << *ip << endl;}

具体输出如下

变量Var的值:5变量Var的中存储的地址ip:0x61fe14访问指针中可用地址处的值:5

请注意,0x0相当于0. 它只是 的十六进制表示0。

指针的概念

指针有很多但很简单的概念,它们对 C++ 编程非常重要。以下是 C++ 程序员应该清楚的几个重要的指针概念 -

指针 说明
空指针 C++ 支持空指针,它是在几个标准库中定义的零值常量。
指针算术 有四种算术运算符可用于指针:++、–、+、-
指针与数组 指针和数组之间有着密切的关系。
指针数组 您可以定义数组来保存多个指针。
指向指针的指针 C++ 允许您在指针上使用指针等等。
将指针传递给函数 通过引用或通过地址传递参数都允许被调用函数在调用函数中更改传递的参数。
从函数返回指针 C++ 允许函数返回指向局部变量、静态变量和动态分配的内存的指针。

空指针

如果没有要分配的确切地址,将指针 NULL 分配给指针变量。分配为 NULL 的指针称为空指针。

#include 
using namespace std;int main () {
int *ptr = NULL; cout << "The value of ptr is " << ptr ; }

当上面的代码被编译和执行时,它会产生以下结果 -

The value of ptr is 0

在大多数操作系统上,不允许程序访问地址 0 处的内存,因为该内存是由操作系统保留的。空指针:指针变量指向内存中编号为0的空间

要检查空指针,您可以使用 if 语句如下 -

if(ptr)     // succeeds if p is not nullif(!ptr)    // succeeds if p is null

指针算术

指针是一个地址,它也是一个数值;因此,可以像对数值一样对指针执行算术运算。有四种算术运算符可用于指针:++、--、+-

“指针++”和“指针–”表示指针所指地址的下一个或前一个数据的地址。

#include 
using namespace std;int main(){
int a[5]; int i; int *p; for(i=0; i<5; i++) cin>>a[i]; cout<

运行结果

123451  2  3  4  5  1  2  3  4  5  1  2  3  4  5

转载地址:https://maoli.blog.csdn.net/article/details/117599341 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【小白学习C++ 教程】八、在C++指针传递引用和Const关键字
下一篇:【小白学习C++ 教程】六、C++内置函数和函数传参

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年05月02日 03时54分38秒