本来是想写个小demo的,手滑,于是就出现了下面的情况。
#include <stdio.h>
int main(void)
{
char array[] = {"china", "america", "france"};
for(int i = 0; i < sizeof(array)/sizeof(array[0]); i++)
{
printf("%s\n", array[i]);
}
return 0;
}
报错:
error: excess elements in char array initializer
初始化字符数组中的元素超额了
想起来了,要打印的是多个字符串,不是单个字符,这得用,指针数组呀。数组中的每个指针指向data段ro段的字符串。
加了个*
改成下面这样:
#include <stdio.h>
int main(void)
{
char *array[] = {"china", "america", "france"};
for(int i = 0; i < sizeof(array)/sizeof(array[0]); i++)
{
printf("%s\n", array[i]);
}
return 0;
}
这下可以正常运行了。
字符数组的初始化
#include <stdio.h>
int main(void)
{
/* way1 array initialize*/
char arr[] = "ould";
char pattern[] = {'o', 'u', 'l', 'd', '\0'};
for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
{
printf("%c\t", arr[i]);
}
putchar(10);
/* way2 array initialize*/
for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++)
{
printf("%c\t", pattern[i]);
}
putchar(10);
return 0;
}
way1,是字符串形式,way2,是用花括号括起来并用逗号分隔的初始化表达式序列(注意结束符’\0’)。