请教C语言中一个奇怪的数组赋值问题
无意间编写程序的时候写错了但是能编译通过并执行,有点不明白了;代码如下:
#include "stdio.h"
main()
{
int i=0;
int Hello[]={"Hello","The","World!"};
printf("在窗体上输出字符串数组的元素!\n\n");
printf("字符串数组的元素是:\n");
for(i=0;i<3;i++)
printf("%s ",Hello[i]);
printf("\n\n");
}
特别是是这句:int Hello[]={"Hello","The","World!"};为什么能执行!










哦明白了 和原来想的一样 只不过忘了在C里面的字符的储存形式是以十六进制的形式储存的,所以编译器应该是把指向字符元素的指针(即入口地址)当成数组的元素被赋予到int Hello[]里面,但是既然这样可以赋值为什么还要写成char *Hello[]呢??这又有什么区别呢?