新手关于指向数组的指针和指向字符数组的指针

新手求教:关于指向数组的指针和指向字符数组的指针
请问有人可以归纳一下指向数组的指针和指向字符数组的指针在使用上有什么异同吗?

比如:

char a[10]="china" , *p1;
int b[10] ={0}, *p2;
p1=a;
p2=b;
cout<<p1;//输出字符串
cout<<p2;//输出b[0]的地址

这一类的。

另外,指针在指向数组或字符数组之后都可以直接替代数组名来使用吗?
------解决思路----------------------
字符数组也是数组,按说都是一样的
不过cout对象对应的类对const char *做了重载,所以cout << p1是打印的字符串而不是指针,普通的指针就只是输出了指针的那个地址而已
------解决思路----------------------
cout 对 char const* 有重载,用 printf %x 打印,这两个指针看起来就没有区别了。

------解决思路----------------------
乍看起来c++的cin、cout在输入、输出上比c的scanf、printf简单,不用格式控制符!
但是不用格式控制符,输入输出恰好是你期望的格式的时候好说;等到输入输出不是你期望的格式的时候,你就会觉得还是用格式控制符更方便、更靠谱。
摒弃cin、cout!
使用scanf、printf。

------解决思路----------------------
首先你的问法就有问题,应该是说指向数值型的指针和指向字符型的指针的区别。

char a[10]="china" , *p1;
int b[10] ={0}, *p2;
p1=a;
p2=b;
cout<<p1;//输出字符串
cout<<p2;//输出b[0]的地址

这里输出的P1并非指针本身的地址值,而对于数值型直接输出指针本身的值。

指针被数值名赋值后可以代替数组名使用