13.深入理解C++指针与引用:提升程序效率的核心技巧

一、前言

指针是个非常强大的东西,同时很大程度上也是C/C++语言的核心与精髓,如果能彻底搞懂指针,你基本就算入了C/C++语言的大门。

指针的出现,包括引用的出现,本质上就是为了解决程序运行效率的问题,比如1M字节大小的数据,如果不使用指针或者引用,那么你每次将它传递给函数,都需要将1M大小的字节全部复制一遍。

而如果使用指针或者引用,那么我们只需要复制4字节、或者8字节即可,也就是这块内存的地址(指针大小取决于你当前是32位程序还是64位程序)。

这样一对比你就会发现,效率提高了不知多少倍!

直接复制:1M=1024kb=1024*1024B 64位程序复制指针:8字节=8B,相差1024*1024/8=131072

至于引用,本质上也是指针的一种变体,后面我们就会看到它的实现原理了。

二、基本使用

指针本质上就是一块固定大小内存的变量而已,无论你是什么类型的,它的大小都是固定不变的:

#include<iostream>
int main() {
	int a;
	double b;
	char c;
	printf("%d,%d,%d",sizeof(&a), sizeof(&b), sizeof(&c));
}

就像上面这样,定义了三个不同类型的变量,然后打印它们的指针大小(通过取址符号&获取地址,sizeof运算符获取大小):

image-20230930094456601

因为此时我这里使用的x64,所以它们的指针大小就会固定为8位,如果你使用的x86,也就是32位程序,那么指针大小就会固定为4位大小。

而这也就是指针能提升效率的原因:无论什么类型,其指针大小都是不变的

如果一个结构体或者类占1M大小,那么通过指针传递,实际上也只需要拷贝指针大小的内存即可,也就是只需要将地址传递过去。

效率大大提升。

而存储地址的变量一般就称为指针:

int *pa=&a;
double *pb=&b;
作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux