| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 645 人关注过本帖
标题:一个奇怪的问题
只看楼主 加入收藏
小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
快速回复:一个奇怪的问题
数据加载中...
 
   



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

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