一个c++课本上的小疑点,感觉有点困惑啊请指点
一个c++课本上的小问题,感觉有点困惑啊,请大虾指点!
class student
{
public:
student(char*pname)
{
cout < < "constructing student " < <pname < <endl;
strcpy(name,pname);
name[sizeof(name)-1]= '\0 ';
}
~student()
{
cout < < "destructing " < <name < <endl;
}
protected:
char name[20];
};
void main()
{
student ss( "jenny ");
}
我想问一下name[sizeof(name)-1]就是name[19]= '\0 '而传给name的实参 "jenny "才5个字节,那不是name[5] name[6] name[7]......都是 '0 '了吗?
------解决方案--------------------
是这样的
数值j e n n y \0 ? ? ? ?……? \0
下标0 1 2 3 4 5 6………………19
?是未知的东西,没有初始化就是未知
------解决方案--------------------
name[19]= '\0 ';
就是下标为19的为‘\0’。。
------解决方案--------------------
就name[5]和 name[19]是 '\0 '
一个是 "j e n n y "结束符,另一个就是赋值的 name[sizeof(name)-1]= '\0 '
------解决方案--------------------
name[sizeof(name)-1]= '\0 ';
具体有什么用处了?
------解决方案--------------------
name[19]= '\0 '
程序给这个数组元素的赋值!
------解决方案--------------------
"就name[5]和 name[19]是 '\0 '
一个是 "j e n n y "结束符,另一个就是赋值的 name[sizeof(name)-1]= '\0 ' "
同意!!!我也是这么认为的!!!
class student
{
public:
student(char*pname)
{
cout < < "constructing student " < <pname < <endl;
strcpy(name,pname);
name[sizeof(name)-1]= '\0 ';
}
~student()
{
cout < < "destructing " < <name < <endl;
}
protected:
char name[20];
};
void main()
{
student ss( "jenny ");
}
我想问一下name[sizeof(name)-1]就是name[19]= '\0 '而传给name的实参 "jenny "才5个字节,那不是name[5] name[6] name[7]......都是 '0 '了吗?
------解决方案--------------------
是这样的
数值j e n n y \0 ? ? ? ?……? \0
下标0 1 2 3 4 5 6………………19
?是未知的东西,没有初始化就是未知
------解决方案--------------------
name[19]= '\0 ';
就是下标为19的为‘\0’。。
------解决方案--------------------
就name[5]和 name[19]是 '\0 '
一个是 "j e n n y "结束符,另一个就是赋值的 name[sizeof(name)-1]= '\0 '
------解决方案--------------------
name[sizeof(name)-1]= '\0 ';
具体有什么用处了?
------解决方案--------------------
name[19]= '\0 '
程序给这个数组元素的赋值!
------解决方案--------------------
"就name[5]和 name[19]是 '\0 '
一个是 "j e n n y "结束符,另一个就是赋值的 name[sizeof(name)-1]= '\0 ' "
同意!!!我也是这么认为的!!!