为什么可以int a[10] = {1}; 而不能char c[10] = {'a' } 不行呢?该怎么解决
为什么可以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 '
为什么整型数组可以这样初始化,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 '