这样为什么出错呢,请看下,谢谢

vsita 2010-06-01 02:30:41
有如下定义

# define LENC sizeof(struct cclass)

struct cclass
{
string name;
int varn;
int funn;
struct var *var;
struct fun *fun;
struct cclass *next;
};

head=(struct cclass *)malloc(LENC);

head->name="abcd";这里的调用怎么会出错呢,请帮帮忙

若是将name定义为字符数组,同时有个字符串要给其赋值,应该如何呢,谢谢了
char name[10];
string word;

word有初值后将其赋给name

谢谢了



...全文
101 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
macrojj 2010-06-01
  • 打赏
  • 举报
回复
我用vc是对的
但是g++是错的
应该是用new 然后没有调用string的构造函数。
vsita 2010-06-01
  • 打赏
  • 举报
回复
是有错的 我这里 head->name 直接是错误的指针
macrojj 2010-06-01
  • 打赏
  • 举报
回复
为什么我运行了是对的呢
星光伴月 2010-06-01
  • 打赏
  • 举报
回复
学C++吧,忘掉C。
vsita 2010-06-01
  • 打赏
  • 举报
回复
strcpy(name, word.c_str());是可行的

用C++是应该摒弃C的一些东西,可惜C++不熟,谢谢大家了
macrojj 2010-06-01
  • 打赏
  • 举报
回复
没有错阿。

没错。
dinjay 2010-06-01
  • 打赏
  • 举报
回复
类的对象只能new来创建,不能用malloc,c++中struct和class的区别只在于默认权限而已
pengzhixi 2010-06-01
  • 打赏
  • 举报
回复
head=(struct cclass *)malloc(LENC);//如果不用new操作符的话 ,那么你后面的赋值肯定是错误的,既然是玩C++就应该摈弃一些C的东西
太乙 2010-06-01
  • 打赏
  • 举报
回复
head=(struct cclass *)malloc(LENC);

head->name="abcd";这里的调用怎么会出错呢,请帮帮忙

string的实现,一般来说是一个char*的指针+一个length计数器!可能还会有些其他技巧在里面(比如copy on write的计数器功能)

lz直接malloc的话,可能不行吧~~~~
太乙 2010-06-01
  • 打赏
  • 举报
回复
char name[10];
string word;

word有初值后将其赋给name


strcpy(name, word.c_str());

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧