数组定义问题
传说数组在定义的时候得赋初值,对么/
但是
class Str
{
public:
void StringCopy(char *strDestination, char *strSource);
};
void Str::StringCopy(char *strDestination, char *strSource)
{
do
*strDestination++=*strSource++;
while(*strSource!= '\0 ');
*strDestination= '\0 ';
}
int main()
{
char str[20]; //这里就没有赋初值啊,为什么呢?
Str s;
s.StringCopy(str, "hello World ");
cout < <str < <endl;
return 0;
}
[解决办法]
谁跟你说“数组在定义的时候得赋初值”的?上下文呢?
所有变量在被取值操作前,必须先赋过初值。
在定义的时候同时初始化是一个更好的编程习惯,而不是正确性上的必须要求。
[解决办法]
数组在定义的时候得赋初值, 是为了防止数组在还没被子赋值的情况下被取值!这样就会访问到不应该访问的内存空间,可能出大问题
[解决办法]
只听过数组定义是要先确定数组的大小,没有听过要初始化的