因为字符串常量可以赋值给指针,所以我就用int类型试了一下,报错,我还以为只是整型数组不可以,已经接近崩溃了,计算机是没有歧视的呀,于是用字符数组的形式试了一下,还是报错
char *k = {'i', 'k', '\0'};
char *c = "I love China";
int *k = {1, 2, 3};
初始值设定项值太多
想知道原因,难道不是数组的第一个元素地址吗
编译器做的事和你想的不一样。
int main()
{
char *k = &(char[3]){'i', 'k', '\0'}[0];
char *c = &"I love China"[0];
int *i = &(int[3]){1, 2, 3}[0];
return 0;
}
char *k = {'i', 'k', '\0'};
k是指针,要指向一个内存地址,他不是数组,不能这么初始化。
int *k 也一样
char *c指向字符常量的内存地址