关于C++指针的基本理解:
1.指针:存储某一块内存的地址,而其他变量是直接存储值
int *p //p是一个指向整型变量的内存空间的指针变量,
//其中存的就是a这个整型变量的内存的地址。
P=&a
2.指针变量:指针变量都是用于保存某一内存的地址的变量,指针变量不是内存地址
3.“*”加上指针变量名表示取指针地址所存储的值,这种方式下,“*”是取值符;加上变量名会取出指向的地址所存储的值。
1 #include <stdio.h> 2 int main() 3 { 4 int a = 4; 5 int *p; 6 p = &a; 7 int **q; //声明一个指针,指向我们已经有的指针p 8 q=&p; //从内存上来想,指针变量p也是保存在内存里的, 9 //所以它的地址也应该是可以通过&p获得到的 10 //输出指针变量p在内存中的地址、输出指针变量p的所存储的p的内存中的地址 11 printf("p in %p, q = %p\n",&p,q); 12 13 //输出整型变量a的地址,指针变量p所存储的变量a的地址,*q取出的值 14 printf("a in %p, p = %p, *q = %p\n",&a, p, *q); 15 16 //输出整型变量a的值,p所存的地址内的值,q所存的地址内的值 17 printf("a = %d, *p = %d, **q = %d\n",a,*p,**q); 18 return 0; 19 }
输出结果:
p in 0x7ffe39988ee8, q = 0x7ffe39988ee8
a in 0x7ffe39988ee4, p = 0x7ffe39988ee4, *q = 0x7ffe39988ee4
a = 4, *p = 4, **q = 4