比较数组和指针的区别,就是比较它们各自的特点:
第一:指针中保存的是数据的地址,而数组保存的是直接的数据。
第二:指针是间接的访问数据,首先得到指针的内容,然后以这个指针的内容作为地址,通过这个地址来访问数据, 而数组则是直接访问数据,a[i]表示以a[i-1]为地址来访问数据。
第三:指针通常用于动态的数据结构,数组一般用于存贮固定数目且数据类型相同的数据元素。
第四:指针相关的函数为mallo(),free(),数组隐式的分配和删除
第五:指针通常指向匿名数据,数组本身就是数据名。

数组和指针都可以在它们定义的时候,用字符串常量来初始化。虽然形式是一样的,但是底层的机制却是不一样的。
指针在定义的时候,编译器并不为指针所指向的对象分配空间,而只是为其本身的分配空间。除非在定义的时候用字符串常量进行初始化。但是只能用字符串常量进行初始化,其他的象浮点型,int型的常量是不可以的,编译的时候会出现无法编译的错误。
例如:char* p="dfdf f "(为其分配了内存空间)
   char*p=3.14//会出现编译错误
在ASCI C中,初始化指针的字符串常量被定义为只读。如果试图通过指针来修改字符串常量的内容,就会出现未定义的行为。有些编译器中,把这些字符串常量保存在一个只读的文本中,防止被修改。
数组也可以用字符串常量进行初始化,与指针相反的是用字符串常量进行初试话的数组,可以被 修改的,单个字符在以后中是可以改变的,例如:
 char butter[]="ff ff ff ff";
 strncpy(butter,"111",5);
结果就是 char butter[]="111fff';