指针是一种数据类型,它指向另外一个对象的地址,其内容就是一块地址,但是他本身也有地址,二者不同.

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;