标题:new分配动态结构数组空间怎么不成
只看楼主
abigboy
Rank: 1
等 级:新手上路
帖 子:8
专家分:3
注 册:2013-4-24
结帖率:66.67%
已结贴  问题点数:4 回复次数:7 
new分配动态结构数组空间怎么不成
#include<iostream>
    using namespace std;
struct pisa
{
    char name[10];
    int zj;
    int zl;
};
int main()
{
//    using namespace std;
    pisa p;
     p=new pisa[2];
    for(int i=0;i<2;i++)
    {
        cout<<"请输入比萨的no. "<<i<<"公司名称"<<endl;
        cin.get(p[i]->name,10);
        cout<<"请输入比萨"<<i<<"的直径"<<endl;
        cin>>p[i]->zj;
        cout<<"请输入比萨"<<i<<"的重量"<<endl;
        cin>>p[i]->zl;        
    }
    for(int i=0;i<2;i++)
    {
        cout<<"公司"<<i<<"名称:"<<p[i]->name<<","<<i<<"直径:"<<p[i]->zj<<","<<i<<"重量:"<<p[i]->zl<<endl;
    }
    delete []p;
    return 0;
}
搜索更多相关主题的帖子: 动态 include 比萨 
2013-06-03 21:43
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
pisa* p = new pisa[2]
2013-06-03 22:15
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
得分:2 
pisa p;
     p=new pisa[2]
你初始化的是一个结构体数组,就不能用这种方式初始化,必须使用指针指向数组的首地址。就像二楼一样

C++菜鸟
2013-06-04 11:00
abigboy
Rank: 1
等 级:新手上路
帖 子:8
专家分:3
注 册:2013-4-24
得分:0 
回复 3楼 lzj12530
我按照二楼那样声明之后 还是不能分配成功这是为什么
2013-06-04 16:50
abigboy
Rank: 1
等 级:新手上路
帖 子:8
专家分:3
注 册:2013-4-24
得分:0 
回复 2楼 rjsp
我按照你的方法进行分配为啥还是不行   顺便问问为啥我那样分配是错误的
2013-06-04 16:51
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
程序代码:
#include <iostream>
#include <string>
using namespace std;

struct pisa
{
    string name;
    int zj;
    int zl;
};

int main()
{
    pisa* p = new pisa[2]; // 其实C/C++都不建议你滥用动态分配
    for( int i=0; i<2; ++i )
    {
        cout<<"请输入比萨的no. "<<i<<"公司名称"<<endl;
        cin >> p[i].name;
        cout<<"请输入比萨"<<i<<"的直径"<<endl;
        cin >> p[i].zj;
        cout<<"请输入比萨"<<i<<"的重量"<<endl;
        cin >> p[i].zl;
    }
    for( int i=0; i<2; ++i )
    {
        cout<<"公司"<<i<<"名称:"<<p[i].name<<","<<i<<"直径:"<<p[i].zj<<","<<i<<"重量:"<<p[i].zl<<endl;
    }
    delete[] p;

    return 0;
}
2013-06-05 08:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:2 
如果 公司名 包含空格的话,将 cin >> p[i].name; 改为 getline( cin, p[i].name );
2013-06-05 08:43
abigboy
Rank: 1
等 级:新手上路
帖 子:8
专家分:3
注 册:2013-4-24
得分:0 
回复 7楼 rjsp
恩 明白了谢谢大神
2013-06-05 17:22



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




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

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