所以,
const char *p= "hi";
和
char a[2]= {'h', 'i'};
char *p= a;
这两者在语法上都是正确的,但是有一个优于另一个吗?我以前认为你不能做* p =" hi&#34 ;; as" hi"它没有明确地分配任何内存,就像在案例2中它在数组a [2]中定义的那样。
答案 0 :(得分:0)
在第一个例子中,p
是只读的(const),只读存储器是“更快”的。因为编译器可以优化它。另外p 实际等于'h', 'i', '\0'
第二个p是可修改的,你可以进行p[0] = 'd'
等操作。但是,如果要在任何地方打印出来,则需要在字符串末尾添加'\0'
。