首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

为什么可以int a[10] = {1}; 而不能char c[10] = {'a' } 不行呢?该怎么解决

2012-03-25 
为什么可以inta[10] {1}而不能charc[10] {a } 不行呢?为什么整型数组可以这样初始化,inta[10]{1}

为什么可以int a[10] = {1}; 而不能char c[10] = {'a' } 不行呢?
为什么整型数组可以这样初始化,int     a[10]   =   {1};     而字符数组不行呢,如
char     c[10]   =   { 'a '   }   ?

[解决办法]
char c[10] = { 'a ' }这样怎么不行了?
[解决办法]
默认值是为0
[解决办法]
int a[10] = {1}; //也只初始化第一个为1,其余为0
[解决办法]
看c环境,有的就是没初始化就赋0

我向来都不指望它是0,一般都用char c[10]={0}或 " ";

ps:考试题目另当别论
[解决办法]
很正常啊,因为在C中,变量是需要初始化才有个正常所需的值的。
而int a[10]={1}或是char的大括号里都只是初始化了第0个元素,也就是说,想要全部初始化,int a[5]={1,1,1,1,1},是需要单独初始化的。char亦此。
如果量较大。可以用for(i=0;i++;i <10){a[i]=1},不过好像得先创建数组。
[解决办法]
内置类型和复合类型,编译器不提供默认值初始化的
类类型由默认构造函数给出默认初始化值
个人意见,高手多多指教
[解决办法]
#include "stdio.h "
int main()
{

int i=0;
char c[6] = { "a "};
while(c[i]!= '\0 ')
{
printf( "%c\n ",c[i]);
i++;
}
printf( "%c\n ",c[4]);
return 1;
}
vc++6.0结果是:
a
//这有一行空白
press any key...
[解决办法]
int a[10]={1};
相当于10个空间中第一个空间放入1,其余空间使用默认值0.对于char类的数据默认值为 '\0 '.
所以:char a[10]={ 'a '};第一个空间为:‘a '其余为:‘、0’
[解决办法]
char a[10] = { 'a '}; //a的第一位为 'a '其余的为结束符‘\0’

memset(a, 'a ', sizeof(a)); //全为 'a '

热点排行