| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1230 人关注过本帖
标题:如何动态分配内存
只看楼主 加入收藏
swdyhb
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-11-26
收藏
 问题点数:0 回复次数:7 
如何动态分配内存
是关于数组结构体的,比如:
struct CandyBar
{
char pin[20];
double chong;
int ka;
};
如果我要用new动态分配一个数组结构:

CandyBar *p=new CandyBar [3];
我初始化为以下内容:
"Mocha Munch",2.3,350
"Iikd iwfi",3.1,560
"eiu iehiu",2.4,390
请教如何做呢?我用了各种方法都通过不了编译。
我是这样做的:
p[0]="Mocha Munch",2.3,350;
p[1]="Iikd iwfi",3.1,560;
p[2]="eiu iehiu",2.4,390;
搜索更多相关主题的帖子: 内存 动态 
2007-07-11 21:20
stupid_boy
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-7-6
收藏
得分:0 
为何不写成类?
这样初始化就很方便了嘛...

我的solution就是class

失眠。。。
2007-07-11 21:23
stupid_boy
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-7-6
收藏
得分:0 

p[0]={"Mocha Munch",2.3,350};
p[1]={"Iikd iwfi",3.1,560};
p[2]={"eiu iehiu",2.4,390};

结构体这样搞.

兄弟.看书去.


失眠。。。
2007-07-11 21:27
swdyhb
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-11-26
收藏
得分:0 

我还没学到类呢,我是自已看书的,没学多久。

2007-07-11 21:35
swdyhb
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-11-26
收藏
得分:0 

这个也不行呀,结构体是应该这样初始化,我之前写错了

p[0]={"Mocha Munch",2.3,350};
p[1]={"Iikd iwfi",3.1,560};
p[2]={"eiu iehiu",2.4,390};

2007-07-11 21:38
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 

我的建议是为结构体定义构造函数


#include <iostream>
#include <cstring>
using namespace std;

struct CandyBar{
char pin[20];
double chong;
int ka;
CandyBar(){}
CandyBar(const char* s,double d,int i);
};

CandyBar::CandyBar(const char* s,double d,int i)
{
strcpy(pin,s);
chong=d;
ka=i;
}

int main()
{
CandyBar *p=new CandyBar [3];
p[0]=CandyBar(\"Mocha Munch\",2.3,350);
p[1]=CandyBar(\"Iikd iwfi\",3.1,560);
p[2]=CandyBar(\"eiu iehiu\",2.4,390);
}

2007-07-11 22:36
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
收藏
得分:0 
回复:(swdyhb)如何动态分配内存

/**
leeco 's soln is the standard way in C++.

If you don't want to write a constructor for your struct
(which is very uncommon), you can initialize them as shown
in the code below.
*/

#include<iostream>

struct CandyBar
{
char pin[20];
double chong;
int ka;
};


using namespace std;

int main()
{
CandyBar *p = new CandyBar[3];

strcpy(p[0].pin, "Mocha Munch");
p[0].chong = 3.1;
p[0].ka = 350;

delete [] p;

return 0;
}


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-07-11 23:33
swdyhb
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-11-26
收藏
得分:0 
谢谢各位,不过我还没学到构造函数,所以对这个方法不是很了解,不过还能看懂。
楼上的方法我也有想过,但没去实行。(还好你没有让我写英语,要不我要跳楼了,只因水平水平太差,呵呵!!)

如果我不用new作动态分配直接用变量初始化是没问题,所以我想着用相似和方法应该也可行。都可以分配内存空间,那么用指针和用普通数组类型来操作元素应该没区别呀????这是我理解的,不知道正不正确!!
2007-07-12 00:23
快速回复:如何动态分配内存
数据加载中...
 
   



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

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