int a=4;
int *p;
p=&a;
cout<<*p<<endl;
结果:4
这算简单的,我一开始也很明白
int* p是声明一个指针变量,那什么是指针变量,我的理解就是p是个变量,变量嘛就是可以变化的量,也就是说p里的值是可以变化的。
既然说*p 是去访问变量里的地址所存放的值(图中我没说清楚)
那 int * p 是什么意思呢?
刚开始的时候我也蛮疑惑的。
我现在的理解:
p是一个指针变量,它的类型是int *,它所指向的类型是int型
也就是说p通过访问它自身存放的地址,的到地址里面放的值得类型。
就如上图,p去访问0xcc,0xcc里面放的是4,4是int,这就是p指针的指向类型。
int**** p;
来探讨一下这个p
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a = 4;
int ****p1 = NULL;
int ***p2 = NULL;
int **p3 = NULL;
int *p4 = NULL;
p4 = &a;
p3 = &p4;
p2 = &p3;
p1 = &p2;
cout << "p1地址:" << p1 <<" " << "p1指向:" << *p1 << endl;
cout << "p2地址:" << p2 <<" " << "p2指向:" << *p2 << endl;
cout << "p3地址:" << p3 <<" " << "p3指向:" << *p3 << endl;
cout << "p4地址:" << p4 <<" " << "p4指向:" << *p4 << endl;
cout << "a的地址: " << &a << endl;
cout << *p1 << endl;
cout << **p1 << endl;
cout << ***p1 << endl;
cout << ****p1 << endl;
}
p1地址:00DAFD5C p1指向:00DAFD50
p2地址:00DAFD50 p2指向:00DAFD44
p3地址:00DAFD44 p3指向:00DAFD74
p4地址:00DAFD74 p4指向:4
a的地址: 00DAFD74
00DAFD50
00DAFD44
00DAFD74
4