奇怪的问题 long b; b=-1999042505; byte a[4]; RtlMoveMemory(&a,&b,4);//a分别是{55,8,217,136}没错//但是下面 long b; b=-1999042505; byte a[5]; a[0]=233; RtlMoveMemory(&a+1,&b,4);//为什么a分别是{233,204,204,204,204} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 RtlMoveMemory()函数功能描述:将一块内存的数据从一个位置复制到另一个位置 参数 Destination 要复制内存块的目的地址。 Source 要复制内存块的源地址。 Length 指定要复制内存块的大小,单位为字节 返回值 该函数为VOID型,没有返回值。byte typedef unsigned char &a不是a这个数组的首地址吗? 按这么推 a+1不就是a[1]的地址吗?那么a应该分别是{233,55,8,217,136} 你定义的a是一个数据链表a本身就是数据链表的首地址&a取的是链表首地址的地址,是一个指针的指针 明白了 非常谢谢&a[0]是首地址对吗? 没错&a[0]就是首地址&a[0] = a正确的调用应该是RtlMoveMemory(a,&b,4);RtlMoveMemory(&a[0],&b,4);RtlMoveMemory(a + 1 ,&b,4);RtlMoveMemory(&a[1],&b,4); 没错&a[0]就是首地址&a[0] = a正确的调用应该是RtlMoveMemory(a,&b,4);RtlMoveMemory(&a[0],&b,4);RtlMoveMemory(a + 1 ,&b,4);RtlMoveMemory(&a[1],&b,4); 刚才调试了一下。知道原因了对于byte a[5] 这种标志类型数据的数组,a就是地址。&a是存这个地址的内存区的地址。你第一个例子没有错,可能是因为,系统在用&a时,有某种机制会让它自动转向它所存储的数据。也就是&a可能自动变成了a,但是&a+ 1.就没法自动变回去。改成a+ 1就对了。再就是+的运算级别 比&高吧?是不是要加括号,但不加为什么也对呢?LZ的C语言基础不好。另外:如何在console模式下输出 byte类型的数据?我是用debug来看数据。不吝赐教。 PretranslateMessage函数中不能调用DoModal()? 有人知道世界语吗 线程注入,程序崩溃??? 明天去南京了,散点小分 MDI程序如何实现界面随着显示器分辨率的大小而自动调整大小 简单的界面问题,高人来指导一下菜鸟? 人才市场的悲哀! 怎样模拟鼠标拖动? 谁在XP下装过VC6.0? 请问各位如何修改MAC地址? 写了一个ie的控件,类似工具条,它可以设置ie的代理。但是如何实现socks代理? HttpSendRequestA函数中的第2,4,5个参数怎么用?
函数功能描述:将一块内存的数据从一个位置复制到另一个位置
参数
Destination
要复制内存块的目的地址。
Source
要复制内存块的源地址。
Length
指定要复制内存块的大小,单位为字节
返回值
该函数为VOID型,没有返回值。
byte typedef unsigned char
那么a应该分别是{233,55,8,217,136}
a本身就是数据链表的首地址
&a取的是链表首地址的地址,是一个指针的指针
&a[0] = a正确的调用应该是
RtlMoveMemory(a,&b,4);
RtlMoveMemory(&a[0],&b,4);
RtlMoveMemory(a + 1 ,&b,4);
RtlMoveMemory(&a[1],&b,4);
&a[0] = a正确的调用应该是
RtlMoveMemory(a,&b,4);
RtlMoveMemory(&a[0],&b,4);
RtlMoveMemory(a + 1 ,&b,4);
RtlMoveMemory(&a[1],&b,4);
对于byte a[5] 这种标志类型数据的数组,a就是地址。&a是存这个地址的内存区的地址。你第一个例子没有错,可能是因为,系统在用&a时,有某种机制会让它自动转向它所存储的数据。也就是&a可能自动变成了a,
但是&a+ 1.就没法自动变回去。改成a+ 1就对了。再就是+的运算级别 比&高吧?是不是要加括号,但不加为什么也对呢?LZ的C语言基础不好。另外:如何在console模式下输出 byte类型的数据?我是用debug来看数据。不吝赐教。