注册 登录
编程论坛 C++教室

一个奇怪的问题

小J 发布于 2009-12-25 17:10, 648 次点击
#include <iostream>
#include <string.h>
using namespace std;
class person
{
private:
public:   
    char name[10];
    void print();
    person(char *);
};
class student:public person
{
private:
public:   
    char sex[2];
    char professional[10];
    student(char *,char *,char *);
    void print();
};
person::person(char *n)
{
    strcpy(name,n);
}
void person::print()
{
    cout<<"name:"<<name<<endl;
}
student::student(char *xm,char *xb,char *p):person(xm)
{
    strcpy(sex,xb);
    strcpy(professional,p);
}
void student::print()
{
    cout<<"name:"<<name<<endl;
    cout<<"sex:"<<sex<<endl;
    cout<<"professional:"<<professional<<endl;
}
void main()
{
    person p("ww");
    p.print();
    student s("ww" , "女" , "计算机应用" );
    s.print();
}
只有本站会员才能查看附件,请 登录

大家请看红的部分。为什么我初始化的时候会出现如图所在的错误。而如果我吧性别换成单个的字符不用数组的时候为什么又是正常的呢?还有就是我的性别只定义了2个长度为什么出现那么长不会溢出了?请各位帮帮忙解释一下哈!
5 回复
#2
小J2009-12-25 17:24
知道什么原因了,是我的sex数组开小了。必须要大于2个字节,但是我还是不明白一个汉字不是只占两个字节吗?那我的数组就只有2个长度为什么出来那么多汉字没有溢出呢?
#3
英英2009-12-25 21:38
实际分配的内存应该比你申请的多
#4
shiyuehai2009-12-25 22:13
我也不是很懂,我想问下是不是分配内存太少,“女”这个串里面'\0'没内存存放才会溢出的?????
#5
yangliangbin2009-12-28 15:51
干嘛不用string呢???
#6
liu2009092009-12-28 20:39
(⊙o⊙)哦!
1