一。首先对指针的第一印象就是他指向的是一个地址,如下面所示:
int a = 3;
int *p = &a;
这样表示的话,p就是表示a这个变量所在的地址,也就是换了一个名称来表明这个地址,其实意义不大
指针的真正的用武之地是在于,在运行阶段分配未命名的内存以存储值,这种情况下,就只能通过指针来访问内存,在c语言中,库函数malloc()来分配内存,在c++ 仍可以使用该方法,但是更好的方法是使用new运算符来分配内存。
eg. int *p = new int;
new是在程序运行的时候才给他分配内存,但是给谁分配的内存,就是说指针p指向的是谁的内存,这里并没名称,这是给他new int 即new了一个int的内存,我们就说p指向的是一个数据对象,这个数据对象比变量更加的通用,他指的是为数据线分配的内存块
但是只要是new出来的内存,就需要程序员手动的释放内存,即deleate p
二。同样的创建数组也有两个方法,一个就是声明来创建数组,即程序在编译的时候为他分配内存,称为静态联编
eg int a[10];
另一种方法是使用new来创建数组 ,在运行的时候才给他分配内存
eg. int *p = new int[size]. 这个size可以是常量10,也可使是变量,由用户在运行的时候给他
删除内存的话就是使用delete [] p
三。指针和数组
指针可以指向的是数组的第一个元素的位置,数组的名称其实也是其第一个元素的位置,他们的区别是指针可以使用算术符,即p = p+1,指向下一个元素的地址,但是数组名是不可以的,数组名只是一个常量,不能+1
三。在函数中,直接使用指针来传递变量的地址,可以节约时间和内存,但是似乎有些麻烦,引用!