==========================================================
author :Vange
create-time: 2010-03-10
http://hi.baidu.com/romeroad/blog/item/bad8cffae04001d5b48f318f.html
==========================================================
引用:
================================
// string.h
void *memset(void *s, int c, size_t n);
================================
看到关键所在了吗?没错,这个函数是在string.h里面声明,所以它不是专门拿来处理内存的(重点)。
memset的操作属于“串操作 ”,专门针对字节(Byte)操作 。
1个char是1个Byte (8 bit)。1个int是4个Byte(64位操作系统)。
当使用下列函数后(假设内存已经申请)
memset( pchar, 1, 10 * sizeof(char));
memset( pint, 1, 10 * sizeof(int ));
则出现下列情况(二进制表示)
pchar: 00000001 00000001 00000001 00000001 ......
pint : 00000001000000010000000100000001 00000001000000010000000100000001 .....
printf(" now : %d, %d, %d /n", *(pchar),*(pchar + 1), *(pchar + 2)); //正常打印为 1,1,1
printf("now : %u, %u, %u /n", *(pint ),*(pint + 1), *(pint + 2)); // 显示: 16843009 , 16843009, 16843009
而16843009 的二进制位数就是 1000000010000000100000001
到这里一切就明了。
如有错误,请多多指正。
使用Memset函数初始化int出现的问题
最新推荐文章于 2024-05-17 03:50:07 发布