读书人

数组有关问题

发布时间: 2012-03-09 21:42:54 作者: rapoo

数组问题
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
//---------------------------------------

#pragma argsused
class sl{
int a;
char b[20];
public:
void m();
};
void sl::m()
{
a = 10;
b[20] = { "dfdafa "};//提示错误为:[C++ Error] Unit1.cpp(18): E2188 Expression syntax
cout < <a < <endl;
cout < <b < <endl;
}
int main(int argc, char* argv[])
{

sl e;
e.m();

cin.get();
return 0;
}

请高手解释以下什么不能运行,错误出在哪里?



[解决办法]
void sl::m()
{
a = 10;
memset(b, 0, 20);
strcpy(b, "dfdafa ");
cout < <a < <endl;
cout < <b < <endl;
}

[解决办法]
char b[20];//数组b有20个字符的空间,但是下标最大就到19.
...
b[20] = { "dfdafa "};//所以这个元素根本不存在,更无法赋值。


要为数组赋值,可以使用楼上的方法。也可以为每个元素赋值
b[0]= 'd ';
b[1]= 'f ';
...

还可以在创建的时候赋值
char b[20]= "dfdafa ";
[解决办法]
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
//---------------------------------------

#pragma argsused
class sl{
int a;
char b[20];
public:
void m();
};
void sl::m()
{
a = 10;
//数组好像不可以这样赋值的,
// b[20] = { "dfdafa "};//提示错误为:[C++ Error] Unit1.cpp(18):E2188 Expression syntax
//这样就可以了
memset(b, 0, 20);
strcpy(b, "dfdafa ");
cout < <a < <endl;
cout < <b < <endl;
}
int main(int argc, char* argv[])
{

sl e;
e.m();

cin.get();
return 0;
}
[解决办法]
void sl::m()
{
a = 10;
memset(b, 0, 20);
strcpy(b, "dfdafa");
cout < <a < <endl;
cout < <b < <endl;
}

读书人网 >C++ Builder

热点推荐