指针是一种数据类型,它指向另外一个对象的地址,其内容就是一块地址,但是他本身也有地址,二者不同.
C++/C 程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以两者是等价的。数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。
指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。
1:指向指针的指针.
看看这个例子:
char ** p =NULL;
char * a = "hello";
以下代码有什么问题:
*p = a;
说明: 对于char **p = NULL; p确实被已经定义了,但是,被p指向的指针*p并没有被定义,所以*p需要被定义才可以使用.
char **p=NULL;
char *a = "hello";
p = new char*[1];//当然[]内可以填写任意大于0的整数.
*p=a;
cout<<*p<<endl;
delete []p; //modify 2005.06.02.侯说,只要是new的时候有 [],delete的时候也应该有[]
p = NULL;