关于字符数组在构造函数里初始化的问题
发布网友
发布时间:2023-07-19 20:58
我来回答
共4个回答
热心网友
时间:2024-12-03 07:23
前者是通过一个字串常量对数组a进行初始化,字串常量本身就带有字串结束符'\0',而此char a[6]="1234";语句相当于:
strcpy(a, "1234");
后者是通过循环对数组a的每个元素进行赋值,但并没有将字串结束符'\0'赋值给a元素,所以会出现乱码,这样改一下就OK了。
a[5] = '\0';
热心网友
时间:2024-12-03 07:24
纠正你一个错误:a[4]和a[5]就都是'\0'; ,a[5]不是0
还有
exp::exp()
{
char a[6]="1234";
}
里面的char a[6]没用.
#include<iostream.h>
class exp
{
public:
char a[6];
exp();
~exp(){}
void set_a();
} ;
exp::exp()
{
}
void exp::set_a()
{
for(int i=0;i<5;i++)
a[i]='5';
a[i] = '\0';
cout <<a;
}
void main()
{
exp e;
e.set_a();
}
热心网友
时间:2024-12-03 07:24
exp::exp()
{
char a[6]="1234"; //这里的a非this->a了吧···
//要想对this->a赋初值,只能strcpy(a,"1234");
}
热心网友
时间:2024-12-03 07:25
纠正你一个错误:a[4]和a[5]就都是'\0';
,a[5]不是0
还有
exp::exp()
{
char
a[6]="1234";
}
里面的char
a[6]没用.
#include<iostream.h>
class
exp
{
public:
char
a[6];
exp();
~exp(){}
void
set_a();
}
;
exp::exp()
{
}
void
exp::set_a()
{
for(int
i=0;i<5;i++)
a[i]='5';
a[i]
=
'\0';
cout
<<a;
}
void
main()
{
exp
e;
e.set_a();
}