字符串初始化数组的方法分析:
char ch[8];
ch = "hello";
错误原因:错误提示:不兼容的类型,error: incompatible types in assignment
char ch[8];这样定义了一个数组后,数组名ch就是个地址常量,也就是指针常量,只能指向该数组在内存地址空间中的首地址。不可以指向别的地址。所以如果
ch = "hello";就是把字符串常量"hello"的首地址赋给地址常量a,这就改变了ch这个指针常量的地址,与上一句的定义冲突,这是不允许的。而如果写成
char ch[8] = "hello";这就是在定义数组a的时候就对其初始化。
char a[]="123" 这个的原理是,系统先根据"123"的长度给a分配内存,这里a的内存在栈,然后把"123"这个常量数据区的内容拷贝给a
char *a="123";这种情况a不分配内存,直接让a指向"123"这个常量数据区 所以如果修改a指向的内容就会出错,比如a[0]='5';//false