数组
数组的初始化可以通过下面的方式
=字符串字面量
={表达式,……}
分别对应一些常见的方式
char arr[]="{hello}";//花括号可以省略,字符串字面量,是char的数组类型,但是用于初始化数组的时候不会发生隐适转换成指针
char *arr[]={"hello","world"};//"hello"和"world"都是表达式,是char 的数组类型,因此转换成首元素指针
int arr[]={'h','e','l','l','o'};
上面最后一个声明成int arr[ ] ,你可能奇怪为什么不用char arr[ ],其实后面的那些字符字面量'a'……,本身就是int类型。
(char []){"hello"}; 这是一种复合字面量,表示数组对象,是左值
所以我们也可以这样声明数组
char *arr[]={(char []){"hello"}};
char arr[]={*(char []){"hello"}='z'}; 里面的(char []){"hello"}数组对象,转换成首元素指针,然后解引用得到数组第一个元素,修改其值为'z',作为表达式用于初始化arr字符数组