• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

c++中关于memcpy函数的问题,希望可以得到答案,谢谢 !!!!!

void *memcpy1(void *desc,const void * src,size_t size)
{
if((desc == NULL) && (src == NULL))
{
  return NULL;
}
unsigned char *desc1 = (unsigned char*)desc;
unsigned char *src1 = (unsigned char*)src;
while(size-- >0)
{
  *desc1 = *src1;
  desc1++;
  src1++;
}
return desc;
}
int _tmain(int argc, _TCHAR* argv[])
{
int dest[2] = {0};
const char src[5] = "1234";
memcpy1(dest,src,sizeof(src));
printf((char *)dest);
int m = -1;
return 0;
}
上面这行代码可以运行
但是,为什么我把int dest[2] = {0};const char src[5] = "1234";这两行代码改成string *p="aaaa";和string *q="bbbbbb",就不行了,希望各位朋友可以解答得详细一点,脑子太蠢。。不好使

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与2

memcpy1函数的desc 和 src 参数类型是指针,函数的行为就是从 src 所指的内存处复制size个字节到 dest 所指的内存。
int dest[2] = {0} 和const char src[5] 这两句声明了两个数组 dest 和 src,数组本身当然就是一段连续的内存。
而且数组在用作右值时——传参数就是此种情况——会自动转为指向其首元素的指针,也就是说传入memcpy1的 dest 和 src 就是指向它们这两段内存的指针,完全符合函数的参数要求。 而且第三个参数是就是src数组的size,所以函数可以正确执行。


你修改的代码是将 dest 和 src 的类型换成了string指针。 但你这两句定义p和q的语句不符合语法!
以 string *p = "aaaa"; 为例: p是string指针。等号右侧的"aaaa"是字符串字面量,本身可以当作数组,所以在这里也会转为指针,但它是const char指针const char* 不能自动转换为 string*,所以无法作为p的初值!编译器即报错。
q也是同理。

使用道具 举报

void函数不能有返回值吧

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!