关于指针,大家都不陌生,无论学习c,c++亦或者其它编程语言,它都是不可或缺的。
但是指针的定义 指针的用法 等等各种问题。我们都必须弄清楚,不能让他阻碍我们前进的步伐;
先说int* p; 这里有必要说明一下 int* 表示的定义一个指向int 类型的指针变量; 该变量内存里是所指对象的地址,
用*指针运算符 即 取值符 取出指针变量p所指的内存空间里的数值(内容)。
看下面一段例子
int *p=NULL; //定义一个指向整形数据的指针变量p,并且使它指向空,即p的内存空间里存取NULL,使它不指向任何变量;如果不将它指向空,它很可能指向非法地址。
int a=10;
p=&a; //这里其实跟第一行道理是一样的,就是先取出a的地址,然后将该地址赋值给p,此时a的地址存储在指针变量p的内存空间里
cout<<*p<<endl; //使用*指针运算符(取值符)取出指针变量p所指向的内存空间里的值
其实还可以这样写 int a=10;
int * p=&a;
cout<<*p<<endl;
所得结果跟上面是一样的,这里的int* p=&a 之所以写*号 是说明p的出身,人家是指向int类型的指针变量;
指针的使用其实就是这样,一般情况下将对象的地址用取地址符取出,然后符给指针变量,使指针变量存取该对象的物理地址,然后使用*p把它指向的对象的值取出来;
当把一个对象的地址赋值给同类型的一个指针时,就称该指针指向了该对象;
有很多情况下取指针指向对象值的时候不使用指针运算符*,而是用 -> 这个取值符, 像在结点中,此时的p-> 中的p是指针变量p所指向内存的首地址,和数组的首地址是一个概念;此时p加上一个->运算符后 p代表的是p所指向的结点;但是注意了,单独一个p仍然是指针变量,什么都不能代表;指针变量p只有加上不同的运算符后,才能表示不同的含义;
关于指针先说这么多了,这么基础的东西想想还是写出来,没事大家可以看看。