从零开始学习C++(十三.C++指针(概念))

133 阅读2分钟

「这是我参与2022首次更文挑战的第13天,活动详情查看:2022首次更文挑战

前言

前篇文章尝试用学到的一些C++基本知识做了一个基本的排序算法,接下来继续学习C++高级一点的知识。

想先讲一下个人对于指针的了解程度,我觉得自己对计算机底层的了解不够,学习复杂的东西非常困难缓慢。指针这个概念的确非常的抽象,对于没有计算机基础知识的人更是很难理解。要深刻理解指针必须要了解计算机底层知识,但是现在学习C++不可能再去深入研究计算机原理了,只能说明一下表面含义顺便粗略讲下基本知识

指针原理

在Golang系列文章页粗略讲过 指针 是一个变量,指针的值为一个变量的地址,这个地址就是物理内存的地址。物理内存就是指计算机中的内存条,在学习指针的时候可以忽略操作系统弄出来的虚拟地址,只讨论这个表面含义的物理地址。

  • 指针就是一个内存地址的变量。

指针定义

C++中要使用指针必须先定义它,指针变量的数据类型可以是任何类型,例如常见的整数变量指针和字符串变量指针定义如下:

int    *num;    //整数类型的指针 
char   *word;    // 字符型的指针 

指针使用

*num指针表示num这个变量存放的内存地址,要使用这个指针要有三个流程,分别是定义指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值

#include <iostream>
using namespace std;

int main() {
	int* p;        // 1.指针变量的声明
	int  num = 1;   // 2.实际变量的声明
	p = &num;       // 3.访问指针变量中可用地址的值,打印出来
	cout << p << endl;
	cout << *p << endl;
}

image.png p 就是存放的地址,内容是内存地址
*p 内容是内存地址存放的值

总结

对于C++指针概念有了基本的了解,下面来继续深入了解指针的具体逻辑,和其他使用方法