区别:
(1). char * p = "abc";
编译时确定 , 且"abc"分配在文字常量区里面,不能试图改变: 例如, p[0] = 'g' 会报错!!! 不能更改常量!
(2) char p[ ] = "abc" ;
运行时确定, 且"abc"分配在栈上, 所以比前一种快! 可以改变: 例如, p[0] = 'g' !
(3) char *c3 = ( char* )malloc(3);
c3 = "abc";
此时, c3 和 p 一样都指向常量区的"abc" , 因为编译器的优化!