char str[四]; str = "abc" error
char str[4]; str = "abc"; error
char str[] = "abc";
和
char *str = "abc";
都是对的,但是下面这样声明——
char str[4];
str = "abc";
编译器为什么就会报错?error:incompatible types when assigning to type 'char[4]' from type 'char*'.
难道是因为“字符串常量指针不能赋值给数组指针”?
(因为 char *p; p = "abc"就可以,所以我才觉得“字符串常量指针可以赋值给指针变量,但是不能给数组指针”,可是原因是什么呢?求指点...
)
------解决思路----------------------
数组都不可以直接用 = 来赋值,除非是初始化
------解决思路----------------------
另外 答题
数组可以通过类型转换 转换为指针
指针不能通过类型转换 转换为数组
完毕
------解决思路----------------------
str ="abc";
右边表达式"abc"类型是char [4], 转换为char *; 左边表达式str的类型char [4], 也会转换为char*, 但是不是一个左值, 不满足第二条。
------解决思路----------------------
错了 <string.h>
char str[] = "abc";
和
char *str = "abc";
都是对的,但是下面这样声明——
char str[4];
str = "abc";
编译器为什么就会报错?error:incompatible types when assigning to type 'char[4]' from type 'char*'.
难道是因为“字符串常量指针不能赋值给数组指针”?
(因为 char *p; p = "abc"就可以,所以我才觉得“字符串常量指针可以赋值给指针变量,但是不能给数组指针”,可是原因是什么呢?求指点...
------解决思路----------------------
数组都不可以直接用 = 来赋值,除非是初始化
------解决思路----------------------
另外 答题
数组可以通过类型转换 转换为指针
指针不能通过类型转换 转换为数组
完毕
------解决思路----------------------
str ="abc";
右边表达式"abc"类型是char [4], 转换为char *; 左边表达式str的类型char [4], 也会转换为char*, 但是不是一个左值, 不满足第二条。
------解决思路----------------------
错了 <string.h>