代码如下:
struct worker
{
int id;
char name[10];
char sex[2];
};
worker w;
w.id=2;
w.name =“奥特曼”;
w.sex = "女";
编译器提示错误:“
IntelliSense: 表达式必须是可修改的左值”,
该怎么解决?
好像说用string就可以直接的赋值,不知道又该怎么使用string?用的是VS2010
strcpy()该怎么写?按着网上的写了下,好像不对
是不是这样:strcpy(w[0].name,"奥特曼");
你加个中括号是干嘛,你的w又不是数组。
strcpy(w.name,"奥特曼");
worker w;
strcpy(w.name,"奥特曼");
strcpy(w.sex,"女");
这样写就提示
“ IntelliSense: "char" 类型的实参与 "char *" 类型的形参不兼容”,是俺写的方式不对?
VS 2010不能直接写 "女" 之类的 ,
写这种字符串要用 _T();函数。
strcpy(w.name,_T("奥特曼"));
比如这种,不加_T()的适合VC6.0的编译器。
c++结构体变量的初始化
和其他类型变量一样,对结构体变量可以在定义时指定初始值。如:
char类型的赋值一般跟字符串一样,因为是多个字符,所以用双引号括起来就可以了。如
"Shanghai"。
这个不是用指针吗,按照你的写法,如果将直接赋值换成
cout >w.id;
这种填写进去的赋值方式,调试时就会出现“程序已停止工作”的框
有两种赋值方式,需要选择其中一种。
1、一种是浅复制(浅拷贝),这样你的req.i->j与x数组指向同一个东西,修改x数组会对结构体内容产生影响。
2、另一种是深复制(深拷贝),把内容搬动进去。