memset()函数的应用

来源:百度知道 编辑:UC知道 时间:2024/06/06 16:42:58
#include <iostream.h>
int main()
{
int B[10];
memset(B , 1 , sizeof(B));
for(int i = 0 ; i < 10 ; i++)
cout << B[i] << endl;
system("pause");
return 0;
}

memset();将每一字节的最后一位变成1
结果全为168430009
要怎么使结果为1啊
我不想把它改为char类的
要怎么办啊

每个int型为4BYTE,因此你memset(B , 1 , sizeof(B)); 意思是从B开始,然后往下10个int型的长度的字节都付给01。你的执行结果是从B(0x0013FF58)指向的内存开始:
0013FF58 01 01 01 01 01 01 01 01 ........
0013FF60 01 01 01 01 01 01 01 01 ........
0013FF68 01 01 01 01 01 01 01 01 ........
0013FF70 01 01 01 01 01 01 01 01 ........
0013FF78 01 01 01 01 01 01 01 01 ........
一个01是一个字节。B[i] == 0x01010101。转换为10进制是16843000。
用memset希望输出全1.可以这样(vc6中实现):
#include <iostream.h>
#include <memory.h>
int main()
{

char B[10];
memset(B , 49, sizeof(B));
for(int i = 0 ; i < 10 ; i++)
cout <<B[i]<< endl;

//system("pause");
return 0;

}
直接用memset不是很好弄。你可以把char再转换为int。这种数组赋值直接用for就好了。