为了账号安全,请及时绑定邮箱和手机立即绑定

以下代码中这里为什么p【2】是4而的d【2】就不是?

以下代码中这里为什么p【2】是4而的d【2】就不是?

呼唤远方 2022-03-19 13:09:42
#include #include using namespace std; int *p=new int[4]; int *d=new int[4]; void Add(int a[],int n) { memcpy(d,a,sizeof(a)); cout< } int main() { int str[]={1,3,4,4}; memcpy(p,str,sizeof(str)); Add(str,4); cout< return 0; } 这里为什么p【2】是4而的d【2】就不是
查看完整描述

2 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

因为des
和src是个void*
,对于void*是不能做偏移运算的,所以把它转换为char*
同样的void*不能++,所以*des++
=
*src++;
不行

查看完整回答
反对 回复 2022-03-23
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

因为虽然你的操作已经溢出了,但是在栈区里面需要对其,其实一个字符的数组还是占了4个字节
你不妨试试1000个或者10000个而不是4个字节再看看

查看完整回答
反对 回复 2022-03-23
  • 2 回答
  • 0 关注
  • 229 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号