#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
//内存拷贝函数
void mymemcpy(const void *src,void *dst,size_t size)
{
assert(src != NULL && dst != NULL);
char *tmp_dst = (char *)(dst);
const char *tmp_src = (const char *)(src);
if(tmp_dst > tmp_src && tmp_dst <= tmp_src + size)
{
tmp_dst += size - 1;
tmp_src += size - 1;
while(size--)
{
*tmp_dst-- = *tmp_src--;
}
}
else
{
while(size--)
{
*tmp_dst++ = *tmp_src++;
}
}
}
void func()
{
char buf[] = "0123456789";
//执行下面的这句话么实际上const修饰的区域的内容发生了变化,所以const修饰的数据是可以修改的,这也许是其中的一种方法吧
mymemcpy(buf,buf+1,9);
printf("%s\n",buf);
}
main()
{
func();
}
总结一下,当读写的区域是同一内存区域,并且读的数据区域是const修饰的,那么在这种情况下const修饰的区域因为非const修饰的写区域的改变而改变。不知总结的对不,望大牛指导。