怎样赋值struct中的char[20]数组??我想其中一定有原因,就是看了半天看不出来

caigua 2005-09-03 11:07:23
前辈帮忙看看吧!
void test_struct(){
struct person{
int no;
char name[20];
char *add;
int age;
};
struct person John;
John.no=1;
John.name="John";//用vc6编译出出错
//error C2106: '=' : left operand must be l-value
//}
在初始化时可以赋值,或者用scanf("%s",John.name);也可以赋值成功
有谁可以说一下为何
Jhon.name="John";
为何不行吗?我想其中一定有原因,就是看了半天看不出来
...全文
145 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
newegg2002 2005-09-04
  • 打赏
  • 举报
回复
这样最多只能拷贝20个字符...
newegg2002 2005-09-04
  • 打赏
  • 举报
回复
字符串赋值用strcpy吧...
安全方便....对于你这种情况.还可以这样以防止内存泄露:
strncpy(Jhon.name, yourSourceString,20);
lzp729 2005-09-04
  • 打赏
  • 举报
回复
“数组名市常量”
这个是对的呀
csdolauli 2005-09-04
  • 打赏
  • 举报
回复
数组名市常量
caigua 2005-09-04
  • 打赏
  • 举报
回复
哦,明白了,是我没有搞清楚
本来char name[20]="John";可以成立,
我还以为name[20]="John";也可以成立
现在试验了一下不行,那我就明白了,本来还以为在struct的成员赋值出现了问题
原来不行,只有初始化的时候可以那样赋值。
谢谢前辈了
wanguodu 2005-09-03
  • 打赏
  • 举报
回复
其实道理很简单,数组名不是一个变量——你可以把它看作是一个常数,不占用存储,因此不能用来赋值;但这并不妨碍它作为一个实参(比如在调用strcpy时),因为你知道常数是可以作为参数传递的。
llf_hust 2005-09-03
  • 打赏
  • 举报
回复
Jhon.name="John";
为何不行吗?我想其中一定有原因,就是看了半天看不出来
//改为
strcpy(Jhon.name, "John");
就可以了

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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