CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  新手乐园

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

楼主caigua(菜瓜)2005-09-03 23:07:23 在 C/C++ / 新手乐园 提问

前辈帮忙看看吧!  
  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";  
  为何不行吗?我想其中一定有原因,就是看了半天看不出来  
  问题点数:20、回复次数:7Top

1 楼llf_hust()回复于 2005-09-03 23:11:37 得分 5

Jhon.name="John";  
  为何不行吗?我想其中一定有原因,就是看了半天看不出来  
  //改为  
      strcpy(Jhon.name,   "John");  
  就可以了Top

2 楼wanguodu(足文字D)回复于 2005-09-03 23:30:52 得分 10

其实道理很简单,数组名不是一个变量——你可以把它看作是一个常数,不占用存储,因此不能用来赋值;但这并不妨碍它作为一个实参(比如在调用strcpy时),因为你知道常数是可以作为参数传递的。Top

3 楼newegg2002(同志们,同胞们,大学的四年,是扎实基础的四年!!)回复于 2005-09-04 00:24:27 得分 1

字符串赋值用strcpy吧...  
  安全方便....对于你这种情况.还可以这样以防止内存泄露:  
  strncpy(Jhon.name,   yourSourceString,20);Top

4 楼newegg2002(同志们,同胞们,大学的四年,是扎实基础的四年!!)回复于 2005-09-04 00:25:03 得分 2

这样最多只能拷贝20个字符...Top

5 楼caigua(菜瓜)回复于 2005-09-04 08:50:25 得分 0

哦,明白了,是我没有搞清楚  
  本来char   name[20]="John";可以成立,  
  我还以为name[20]="John";也可以成立  
  现在试验了一下不行,那我就明白了,本来还以为在struct的成员赋值出现了问题  
  原来不行,只有初始化的时候可以那样赋值。  
  谢谢前辈了  
  Top

6 楼csdolauli(1937年的爱情)回复于 2005-09-04 10:32:18 得分 1

数组名市常量Top

7 楼lzp729(lzp729)回复于 2005-09-04 10:45:37 得分 1

“数组名市常量”  
  这个是对的呀Top

相关问题

  • 数组赋值
  • 数组赋值!
  • 急!!!数组赋值
  • 怎么把一个string变量赋值给char数组?
  • 如何给数组赋值,就像:char str[]={"123","234","322"..}
  • 如何把CString中的字符串赋值给char 型数组?
  • char数组为什么只能只能赋值字符串常量,不能用变量赋值?
  • 数组赋值问题
  • 为数组赋值出错!
  • 怎样对数组赋值???

关键词

  • john
  • 赋值
  • jhon
  • 不行
  • strcpy
  • struct
  • 想其中一定有原因
  • 数组名
  • char

得分解答快速导航

  • 帖主:caigua
  • llf_hust
  • wanguodu
  • newegg2002
  • newegg2002
  • csdolauli
  • lzp729

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo