从头学习C++指针基础01

107 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情

因为指针被称为C++的核心以及灵魂,而且公认学习难度大,所以作为初学者,决定一点点从指针基础写相关文章从而将这一难点攻破,若有问题及其他相关可一起交流。

前言

依据之前的基础学习,int a = 10;这里定义了一个变量a,存贮的内容为一个整数10。

我们知道,每一个变量其实都会有一块内存分配给它,例如,上述例子中的变量a为0X0011,在编译器中,获取一个变量的内存地址可以使用连字符(&)运算符。

对于&运算符,在C++中也是引用的标志,在之后指针的文章中会一起出现。

&使用语法例子

    int p = 10;
    int a = 20;
    cout << "变量p的内存地址为: << &p << endl;
    cout << "变量a的内存地址为: << &a << endl;

在上面的例子中会输出:

变量p的内存地址为: 0X0011
变量a的内存地址为: 0X0022

指针定义

指针其实就是一个变量,只不过与其他之前所学的变量不同的是,指针变量储存的是另一个变量的地址,也就是内存位置的直接地址。

与其他变量或者是常量一样,在使用它存储其他变量的地址之前,必须提前声明,声明的语法为:type* var-name
其中,type为指针的基类型,即C++的数据类型,var-name为指针变量的名称。

例如,在下面的例子中先声明一个指向整型类型的指针,然后让它存储另一个变量a的地址,再通过&运算符输出a的内存地址。

int a = 10;
int* p;
p = &a;
cout << "变量a的内存地址为: << P << endl;

上面的例子中会输出:

变量a的内存地址为: 0X0011

为易于辨别指针变量及其含义,我个人比较习惯以及推荐写int* p,即将运算符写在靠近数据类型的地方,体现出int* 才是这个变量p的数据类型。

同时,我们可以在声明指针的时候将其指向另一个变量的内存地址。例如上面的代码区我们可以写成:

int a = 10;
int* p = &a;

int* p = &a;就等于int* p;p = &a;

要牢记,这里的指针p是一个变量,int* 是一个数据类型

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情