CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

请教一个关于C函数memmove的问题(在线等待)

楼主jjggww2002(jjggww2002)2003-06-01 20:37:25 在 VC/MFC / 进程/线程/DLL 提问

编写一个控制台程序,代码如下:  
              #include   <string.h>    
              #include   <stdio.h>  
  int   main(int   argc,   char*   argv[])  
  {  
      char   dest[]   =   "abcdefghijklmnopqrstuvwxyz0123456789";    
      char   src[]=   "******************************";    
      printf("destination   prior   to   memmove:   %s\n",   &dest);    
      memmove(&dest,   &src,   26);    
      printf("destination   after   memmove:         %s\n",   &dest);    
      return   0;    
  }  
        编译,连接,执行,一切正常。  
      如果将main()函数体的中的代码换为下面,  
   
      char   *dest   =   "abcdefghijklmnopqrstuvwxyz0123456789";    
      char   *src   =   "******************************";    
      printf("destination   prior   to   memmove:   %s\n",   dest);    
      memmove(dest,   src,   26);    
      printf("destination   after   memmove:         %s\n",   dest);    
      return   0;    
     
    编译,连接正常,但是执行时报错。  
      请问这是什么原因呢?期盼着您的指教!  
  问题点数:20、回复次数:4Top

1 楼microsoftwin(流星雨点)回复于 2003-06-01 20:49:02 得分 10

前一个例子变量是栈上的  
  后一个例子相当于常量,不能动的Top

2 楼jjggww2002(jjggww2002)回复于 2003-06-01 20:51:16 得分 0

再补充请教一个问题:  
        结构in_addr在msdn中的解释如下:    
        struct   in_addr   {  
                  union   {  
                                  struct   {   u_char   s_b1,s_b2,s_b3,s_b4;   }   S_un_b;  
                                  struct   {   u_short   s_w1,s_w2;   }   S_un_w;  
                                  u_long   S_addr;  
                  }   S_un;  
        哪位老师能详细地解释一下这个结构的含义和使用方法?Top

3 楼jjggww2002(jjggww2002)回复于 2003-06-01 21:00:15 得分 0

哦,是不是说:  
        char   *dest   =   "abcdefghijklmnopqrstuvwxyz0123456789";   该语句定义了一个字符串常量,  
  而语句memmove(dest,   src,   26);   复制字符串src中的26个字符到字符串dest中。因为字符串dest  
  是字符串常量,不能被改变,所以出错?Top

4 楼windbells(风铃)回复于 2003-06-01 22:03:53 得分 10

它是用联合来构造的这个结构,这样可以用多种方法来给这个结构的变量进行赋值。  
  例如。  
   
  in_addr   ssin;  
  ssin.S_un.S_un_b.s_b1=192;  
  ssin.S_un.S_un_b.s_b2=168;  
  ssin.S_un.S_un_b.s_b3=0;  
  ssin.S_un.S_un_b.s_b4=1;  
   
  与  
  ssin.S_un.S_addr=inet_addr("192.168.0.1");  
  得到的结果是一样的  
  Top

相关问题

  • c++函数
  • C函数
  • C#调用函数的问题!在线等待,马上结分!
  • c函数问题,在线等待,高分相送!!!
  • 哪里有C++Builder函数库大全下载 ?(等待)
  • 请问C语言中等待函数是什么?
  • 如何在PRO*C/C++中建立过程,函数和包,在线等待中。。。。。。。。。。。。
  • C++函数手册!
  • 求C#的函数?
  • 再求函数(C#)?

关键词

  • 结构
  • memmove
  • ssin
  • un
  • 字符串
  • dest
  • 常量
  • abcdefghijklmnopqrstuvwxyz
  • destination
  • addr

得分解答快速导航

  • 帖主:jjggww2002
  • microsoftwin
  • windbells

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

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