标题:一个奇怪的问题
只看楼主
小J
Rank: 8Rank: 8
等 级:等待验证会员
威 望:1
帖 子:282
专家分:704
注 册:2009-6-18
结帖率:100%
 问题点数:0 回复次数:5 
一个奇怪的问题
#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个长度为什么出现那么长不会溢出了?请各位帮帮忙解释一下哈!
2009-12-25 17:10
小J
Rank: 8Rank: 8
等 级:等待验证会员
威 望:1
帖 子:282
专家分:704
注 册:2009-6-18
得分:0 
知道什么原因了,是我的sex数组开小了。必须要大于2个字节,但是我还是不明白一个汉字不是只占两个字节吗?那我的数组就只有2个长度为什么出来那么多汉字没有溢出呢?
2009-12-25 17:24
英英
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:29
专家分:133
注 册:2009-3-3
得分:0 
实际分配的内存应该比你申请的多
2009-12-25 21:38
shiyuehai
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:96
专家分:116
注 册:2009-9-4
得分:0 
我也不是很懂,我想问下是不是分配内存太少,“女”这个串里面'\0'没内存存放才会溢出的?????
2009-12-25 22:13
yangliangbin
Rank: 2
来 自:广西
等 级:论坛游民
帖 子:66
专家分:62
注 册:2009-6-3
得分:0 
干嘛不用string呢???

相信自已……
2009-12-28 15:51
liu200909
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:56
专家分:54
注 册:2009-9-20
得分:0 
(⊙o⊙)哦!
2009-12-28 20:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-294303-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.140500 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved