c/c++ 指针的江湖传说

发布时间 2023-11-03 22:46:16作者: 夕西行

万物皆内存,内存有两个东西:地址、值。

普通变量、引用变量、指针变量,二级指针变量,数组,指针数组...等等,皆内存。

【指针】

int x = 10;         //变量
int* pX = &x;       //指针变量
int** ppX = &pX;    //二级指针变量
//地址,值
std::cout << &x << "," << x << std::endl;
std::cout << &pX << "," << pX << std::endl;
std::cout << &ppX << "," << ppX << std::endl;

x、pX、ppX都是“值”。只不过有的“值”刚好是所指向内存的“地址”,所以课本上、网络上将pX、ppX说成“地址”。

良好的命名习惯,有助于指针的快速理解而不会晕头转向。一级指针p开头,二级指针pp开头,遇*则抵消,剩者为真身。

*pX→x,值 10

*ppX→pX,值 00000086ECBBF604

**ppX→x,值 10

【指针大小】

开篇图中,只有10是int型,占4字节。其他的“值”“地址”都是地址属性,64位系统中占8字节,32位系统中占4字节。

为了稳妥,可以用 long long承接地址。

 

【数组】